すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:コンピュータにTerraformをインストールして構成する

最終更新日:Feb 21, 2025

Terraformのテンプレート構文を使用してクラウドリソースを定義、プレビュー、デプロイする前に、Terraformをインストールして設定する必要があります。

手順

  1. Terraformをインストールします。

    1. お使いのオペレーティングシステムに合ったTerraformインストールパッケージをTerraform公式ウェブサイト.

    2. Terraformインストールパッケージを解凍します。

      • LinuxまたはmacOSオペレーティングシステムの場合は、パッケージを /usr/local/binディレクトリに解凍します。 パッケージを別のディレクトリに解凍する場合は、環境変数を設定する必要があります。 詳細については、「」をご参照ください。Linux/Unixで $PATHを永久に設定する方法は?

      • Windowsオペレーティングシステムの場合は、パッケージをD:\terraform\ などの任意のディレクトリに解凍し、そのディレクトリをパス環境変数の値に追加します。 詳細については、「」をご参照ください。Windowsのmake.exeへのパスはどこで設定できますか?

    3. 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" サブコマンドのエイリアス。
  2. 権限管理の柔軟性とセキュリティを高めるために、RAM (Resource Access management) ユーザーを作成し、RAMユーザーに必要な権限を付与することを推奨します。

    1. にログインします。RAMコンソール.

    2. Terraformという名前のRAMユーザーを作成し、そのユーザーのAccessKeyペアを作成します。 詳細については、「RAM ユーザーの作成」および「Accesskeyペアの取得」をご参照ください。

    3. RAMユーザーに権限を付与します。 この例では、AliyunRDSFullAccess、AliyunVPCFullAccess、およびAliyunRAMFullAccessポリシーをTerraformユーザーにアタッチします。 詳細については、「RAM ユーザーへの権限付与」をご参照ください。

  3. 認証情報を格納する環境変数を追加します。

    • LinuxまたはmacOSオペレーティングシステムの場合は、次のコマンドを実行します。

      エクスポートALICLOUD_ACCESS_KEY="*****"
      エクスポートALICLOUD_SECRET_KEY="*****"
      エクスポートALICLOUD_REGION="cn-hangzhou" 
      説明

      ALICLOUD_REGION環境変数は、インスタンスを管理するリージョンを指定します。 この環境変数の値は、インスタンスが存在するリージョンと同じである必要があります。 ビジネス要件に基づいて値を変更できます。

    • Windowsオペレーティングシステムの場合、ALICLOUD_ACCESS_KEYALICLOUD_SECRET_KEY、およびALICLOUD_REGION環境変数を追加します。添加环境变量

  4. 実行ディレクトリとTerraform. tfという名前のterraformテンプレートを作成します。

    1. 実行ディレクトリを作成し、ディレクトリにアクセスします。

      説明

      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フォルダにアクセスします。

    2. 実行ディレクトリに、Terraform. tfという名前のterraformテンプレートを作成します。

      • LinuxまたはmacOSオペレーティングシステムの場合は、次のコマンドを実行します。

        タッチterraform.tf
      • Windowsオペレーティングシステムの場合は、terraform.tfファイルを手動で作成します。

  5. この例では、terraform.tfファイルを使用してゾーン情報を照会します。

    • LinuxまたはmacOSオペレーティングシステムの場合は、次のコマンドを実行します。

      vim terraform.tf
    • Windowsオペレーティングシステムの場合は、terraform.tfファイルを手動で編集します。

    この例では、次の情報をファイルに追加します。

    データ "alicloud_db_zones" "queryzones" {
      instance_charge_type= "PostPaid"
      engine = "PostgreSQL"
      db_instance_storage_type = "cloud_essd"
    } 
    説明

    vimコマンドを実行したら、Escを押して :wqと入力し、設定を保存して終了する必要があります。

  6. を実行します。Run theterraform 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のモジュールまたはバックエンド設定を設定または変更した場合、このコマンドを再実行して、作業ディレクトリを再初期化します。 あなたが忘れた場合、その他
    コマンドはそれを検出し、必要に応じてそうするように思い出させます。
  7. を実行します。Run theterraform planコマンドを実行して設定をプレビューします。

    この例では、Windowsクライアントが使用され、次の結果が返されます。

    PS D:\rdspg> terraform plan
    data.alicloud_db_zones.queryzones: 読み取り...
    data.alicloud_db_zones.queryzones: 4秒後に読み取り完了 [id=491248936]
    
    変更はありません。 インフラストラクチャが設定に一致します。
    
    Terraformは、実際のインフラストラクチャを構成と比較しましたが、違いは見つかりませんでした。必要です。
  8. を実行します。Run theterraform 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破棄。
  9. を実行します。Run theterraformショーコマンドを実行して結果を照会します。

    この例では、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 = []
            },
        ]
    }