Terraformのテンプレート構文を使用してクラウドリソースを定義、プレビュー、デプロイする前に、Terraformをインストールして設定する必要があります。
手順
Terraformをインストールします。
お使いのオペレーティングシステムに合ったTerraformインストールパッケージをTerraform公式ウェブサイト.
Terraformインストールパッケージを解凍します。
LinuxまたはmacOSオペレーティングシステムの場合は、パッケージを
/usr/local/binディレクトリに解凍します。 パッケージを別のディレクトリに解凍する場合は、環境変数を設定する必要があります。 詳細については、「」をご参照ください。Linux/Unixで $PATHを永久に設定する方法は?Windowsオペレーティングシステムの場合は、パッケージを
D:\terraform\などの任意のディレクトリに解凍し、そのディレクトリをパス環境変数の値に追加します。 詳細については、「」をご参照ください。Windowsのmake.exeへのパスはどこで設定できますか?
terraformコマンドを実行して、Terraformのインストールを確認します。Terraformがインストールされている場合、次のようなコマンド出力が返され、使用可能なTerraformオプションが含まれます。
使用法: terraform [グローバルオプション] <subcommand> [args] 実行可能なコマンドを以下に示します。 主なワークフローコマンドが最初に与えられ、続いて あまり一般的ではないまたはより高度なコマンド。 主なコマンド: init他のコマンド用に作業ディレクトリを準備する validate構成が有効かどうかを確認する 計画現在の構成に必要な変更を表示する インフラストラクチャの作成または更新を適用 destroy以前に作成されたインフラストラクチャを破壊する 他のすべてのコマンド: コンソール対話型コマンドプロンプトでTerraform式を試す fmt標準スタイルで構成を再フォーマットする force-unlock現在のワークスペースでスタックロックを解除する 取得リモートTerraformモジュールのインストールまたはアップグレード グラフ操作のステップのGraphvizグラフを生成する import既存のインフラストラクチャをTerraformリソースに関連付ける loginリモートホストの資格情報の取得と保存 リモートホストのローカルに保存された資格情報を削除する 出力ルートモジュールからの出力値を表示する プロバイダーこの設定に必要なプロバイダーを表示 リフレッシュリモートシステムに合わせて状態を更新する show現在の状態または保存したプランを表示する state高度な状態管理 リソースインスタンスを完全に機能しないものとしてマークする テストモジュール統合テストの実験的サポート untaintリソースインスタンスから「汚染された」状態を削除する 現在のTerraformバージョンを表示する workspace Workspace management グローバルオプション (サブコマンドがある場合は、これらを使用します): -chdir=DIRを実行する前に別の作業ディレクトリに切り替えます。 与えられたサブコマンド。 -helpこのヘルプ出力、または指定したサブコマンドのヘルプを表示します。 -version "version" サブコマンドのエイリアス。
権限管理の柔軟性とセキュリティを高めるために、RAM (Resource Access management) ユーザーを作成し、RAMユーザーに必要な権限を付与することを推奨します。
にログインします。RAMコンソール.
Terraformという名前のRAMユーザーを作成し、そのユーザーのAccessKeyペアを作成します。 詳細については、「RAM ユーザーの作成」および「Accesskeyペアの取得」をご参照ください。
RAMユーザーに権限を付与します。 この例では、AliyunRDSFullAccess、AliyunVPCFullAccess、およびAliyunRAMFullAccessポリシーをTerraformユーザーにアタッチします。 詳細については、「RAM ユーザーへの権限付与」をご参照ください。
認証情報を格納する環境変数を追加します。
LinuxまたはmacOSオペレーティングシステムの場合は、次のコマンドを実行します。
エクスポートALICLOUD_ACCESS_KEY="*****" エクスポートALICLOUD_SECRET_KEY="*****" エクスポートALICLOUD_REGION="cn-hangzhou"説明ALICLOUD_REGION環境変数は、インスタンスを管理するリージョンを指定します。 この環境変数の値は、インスタンスが存在するリージョンと同じである必要があります。 ビジネス要件に基づいて値を変更できます。
Windowsオペレーティングシステムの場合、ALICLOUD_ACCESS_KEY、ALICLOUD_SECRET_KEY、およびALICLOUD_REGION環境変数を追加します。
実行ディレクトリとTerraform. tfという名前のterraformテンプレートを作成します。
実行ディレクトリを作成し、ディレクトリにアクセスします。
説明Terraformプロジェクトごとに実行ディレクトリを作成する必要があります。
LinuxまたはmacOSオペレーティングシステムの場合は、次のコマンドを実行します。
sudo mkdir /usr/local/terraform cd /usr /ローカル /terraform重要root以外のユーザーを使用する場合は、
terraformディレクトリに対する権限を付与する必要があります。sudo chown -R <Current username >:< User group name> /usr/local/terraformコマンドを実行して、terraformフォルダーの所有者を現在のユーザーに変更します。Windowsオペレーティングシステムの場合は、ドライブDに
rdspgなどのフォルダを作成し、rdspgフォルダにアクセスします。
実行ディレクトリに、Terraform. tfという名前のterraformテンプレートを作成します。
LinuxまたはmacOSオペレーティングシステムの場合は、次のコマンドを実行します。
タッチterraform.tfWindowsオペレーティングシステムの場合は、
terraform.tfファイルを手動で作成します。
この例では、
terraform.tfファイルを使用してゾーン情報を照会します。LinuxまたはmacOSオペレーティングシステムの場合は、次のコマンドを実行します。
vim terraform.tfWindowsオペレーティングシステムの場合は、
terraform.tfファイルを手動で編集します。
この例では、次の情報をファイルに追加します。
データ "alicloud_db_zones" "queryzones" { instance_charge_type= "PostPaid" engine = "PostgreSQL" db_instance_storage_type = "cloud_essd" }説明vimコマンドを実行したら、Escを押して:wqと入力し、設定を保存して終了する必要があります。を実行します。Run the
terraform initコマンドを実行して、設定を初期化します。この例では、Windowsクライアントが使用され、次の結果が返されます。
PS D:\rdspg> terraform init バックエンドの初期化... プロバイダーのプラグインを初期化... -依存関係ロックファイルから以前のバージョンのhashicorp/alicloudを再利用する -以前にインストールされたhashicorp/alicloud v1.186.0の使用 ╷ │ 警告: レジストリからの追加プロバイダー情報 │ │ リモートレジストリからregistry.terraform.io/hashicorp/alicloudの警告が返されました。│-Terraform 0.13以上のユーザーの場合、このプロバイダーはaliyun/alicloudに移行しました。 ソースを更新してください │ required_providers。 ╵ Terraformは正常に初期化されました! You may now begin working with Terraform. 「terraform plan」を実行してみてください インフラストラクチャに必要な変更。 すべてのTerraformコマンド 今働くべきです。 Terraformのモジュールまたはバックエンド設定を設定または変更した場合、このコマンドを再実行して、作業ディレクトリを再初期化します。 あなたが忘れた場合、その他 コマンドはそれを検出し、必要に応じてそうするように思い出させます。を実行します。Run the
terraform planコマンドを実行して設定をプレビューします。この例では、Windowsクライアントが使用され、次の結果が返されます。
PS D:\rdspg> terraform plan data.alicloud_db_zones.queryzones: 読み取り... data.alicloud_db_zones.queryzones: 4秒後に読み取り完了 [id=491248936] 変更はありません。 インフラストラクチャが設定に一致します。 Terraformは、実際のインフラストラクチャを構成と比較しましたが、違いは見つかりませんでした。必要です。を実行します。Run the
terraform applyコマンドを実行して設定を適用します。この例では、Windowsクライアントが使用され、次の結果が返されます。
PS D:\rdspg> terraform apply data.alicloud_db_zones.queryzones: 読み取り... data.alicloud_db_zones.queryzones: 0以降の読み取り完了 [id=491248936] 変更はありません。 インフラストラクチャが設定に一致します。 Terraformは、実際のインフラストラクチャを構成と比較しましたが、違いは見つかりませんでした。必要です。 Apply complete! リソース: 0追加、0変更、0破棄。を実行します。Run the
terraformショーコマンドを実行して結果を照会します。この例では、Windowsクライアントが使用され、次の結果が返されます。
PS D:\rdspg> terraform show # data.alicloud_db_zones.queryzones: data "alicloud_db_zones" "queryzones" { db_instance_storage_type = "cloud_essd" engine = "PostgreSQL" id = "491248936" ids = [ "cn-hangzhou-g" 、 "cn-hangzhou-j" 、 "cn-hangzhou-k" 、 ] instance_charge_type = "PostPaid" マルチ=false multi_zone = false zones = [ { id = "cn-hangzhou-g" multi_zone_ids = [] }, { id = "cn-hangzhou-j" multi_zone_ids = [] }, { id = "cn-hangzhou-i" multi_zone_ids = [] }, { id = "cn-hangzhou-j" multi_zone_ids = [] }, { id = "cn-hangzhou-k" multi_zone_ids = [] }, ] }