Terraform 構成を含むデザインでは、Cloud Assembly オンプレミス製品と統合する Terraform ランタイム環境にアクセスできることが必須です。

Terraform ランタイムを追加する方法

ランタイム環境は、Terraform CLI コマンドを実行することで要求された操作を実行する Kubernetes クラスタで構成されています。また、ランタイムはログを収集し、Terraform CLI コマンドの結果を返します。

vRealize Automation オンプレミス製品では、ユーザーが独自の Terraform ランタイム Kubernetes クラスタを構成する必要があります。組織あたり 1 つの Terraform ランタイムのみがサポートされます。組織内のすべての Terraform 展開は同じランタイムを使用します。

  1. Terraform CLI を実行する Kubernetes クラスタがあることを確認します。
    • すべてのユーザーは、Kubeconfig ファイルを指定して、管理対象外の Kubernetes クラスタで Terraform CLI を実行できます。
    • Enterprise ライセンス ユーザーは、vRealize Automation によって管理されている Kubernetes クラスタで Terraform CLI を実行することができます。

      Cloud Assembly で、[インフラストラクチャ] > [リソース] > [Kubernetes] の順に移動して、Kubernetes クラスタがあることを確認します。追加する必要がある場合は、Cloud Assembly で Kubernetes を使用する方法を参照してください。

  2. Kubernetes クラスタを新たに追加した場合、または変更した場合は、データ収集が完了するまで待機します。

    データ収集は名前空間などの情報のリストを取得するため、プロバイダによっては最大で 5 分かかることもあります。

  3. データ収集の完了後、[インフラストラクチャ] > [接続] > [統合] > [統合の追加] の順に移動し、[Terraform ランタイム] カードを選択します。
  4. 設定を入力します。
    図 1. Terraform ランタイム統合の例
    Terraform ランタイム統合の例(Advanced ライセンス ユーザー向け)
    設定 説明
    名前 ランタイム統合に一意の名前を付けます。
    説明 統合の目的を入力します。
    Terraform ランタイム統合:
    ランタイム タイプ(Enterprise のみ) Enterprise ライセンス ユーザーは、vRealize Automation によって管理されている Kubernetes クラスタと管理対象外の Kubernetes クラスタのどちらで Terraform CLI を実行するか選択できます。
    Kubernetes kubeconfig(すべてのユーザー)

    管理対象外の Kubernetes クラスタの場合、外部クラスタの kubeconfig ファイルの内容全体を貼り付けます。

    プロキシ サーバで外部 Kubernetes ランタイムを使用する方法については、プロキシ サポートを追加する方法を参照してください。

    このオプションは、すべてのユーザーが使用できます。

    Kubernetes クラスタ(Enterprise のみ)

    vRealize Automation によって管理されている Kubernetes の場合は、Terraform CLI を実行するクラスタを選択します。

    クラスタおよびそのクラスタの kubeconfig ファイルにアクセスできることが必要です。kubeconfig へのアクセスは、/cmx/api/resources/k8s/clusters/{clusterId}/kube-config に対する GET によって確認できます。

    このオプションは、Enterprise ライセンスでのみ使用できます。

    Kubernetes 名前空間 Terraform CLI を実行するポッドを作成するために、クラスタ内で使用する名前空間を選択します。
    ランタイム コンテナ設定:
    イメージ 実行する Terraform バージョンのコンテナ イメージへのパスを入力します。
    注: [検証] ボタンをクリックしても、コンテナ イメージはチェックされません。
    CPU 要求 コンテナの実行に必要な CPU の量を入力します。デフォルトは 250 ミリコアです。
    CPU リミット コンテナの実行で許容される CPU の最大量を入力します。デフォルトは 250 ミリコアです。
    メモリ要求 コンテナの実行に必要なメモリの量を入力します。デフォルトは 512 MB です。
    メモリ リミット コンテナの実行で許容されるメモリの最大量を入力します。デフォルトは 512 MB です。
  5. [検証] をクリックし、必要に応じて設定を調整します。
  6. [追加] をクリックします。

設定はキャッシュされます。統合の追加後、クラスタや名前空間などの設定を変更することはできますが、変更が検出されるまでと、新しい設定で Terraform CLI が実行されるまでに最大 5 分かかることがあります。

Terraform ランタイムのトラブルシューティング

Terraform 構成の展開の問題は、ランタイム統合に関連している場合があります。

問題 原因 解決方法
名前空間が無効であることを示すエラーが表示され、検証が失敗する。 クラスタが変更されても、ユーザー インターフェイスに以前の名前空間が残っています。 クラスタの選択を変更した後は、名前空間を必ず再選択します。
名前空間のドロップダウンが空であるか、新しく追加された名前空間がリストされていません。 クラスタのデータ収集が完了しない。データ収集は、クラスタの入力/変更後は最大で 5 分かかります。また、名前空間の入力/変更時には最大で 10 分かかります。 既存の名前空間を含む新しいクラスタの場合、データ収集が完了するまで最大 5 分間待機します。

既存のクラスタ内の新しい名前空間の場合、データ収集が完了するまで最大 10 分間待機します。

問題が解決しない場合は、クラスタを削除して [インフラストラクチャ] > [リソース] > [Kubernetes] で再度追加します。

統合アカウントを更新しても、Terraform CLI コンテナが、以前のクラスタ、以前の名前空間、以前のランタイム設定で作成される。 vRealize Automation によって使用される Kubernetes API クライアントは、5 分間キャッシュされます。 変更が有効になるまでに最大で 5 分かかる場合があります。
kubeconfig が使用できないことを示すエラーが表示され、検証または Terraform の展開操作に失敗する。 これらのエラーは、クラスタに vRealize Automation からアクセスできないことが原因で発生する場合があります。

それ以外の場合では、ユーザーの認証情報、トークン、証明書が無効になります。

kubeconfig エラーはさまざまな理由で発生する可能性があります。トラブルシューティングには、テクニカルサポートにとの連携が必要になる場合があります。

プロキシ サポートを追加する方法

外部 Kubernetes ランタイム クラスタをプロキシ サーバ経由で接続するには、次の手順を実行します。

  1. 外部 Kubernetes クラスタ サーバにログインします。
  2. 空のフォルダを作成します。
  3. 新しいフォルダで、Dockerfile という名前の新しいファイルに次の行を追加します。
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. プレースホルダ値を変更して、インターネットへのアクセスに使用するプロキシ サーバ設定を https_proxy および http_proxy 環境変数に含めます。

    protocol は、プロキシ サーバでの使用に応じて http または https になります。これは、https_proxy または http_proxy という環境変数名と一致しない可能性があります。

  5. Dockerfile を保存して閉じます。
  6. 空のフォルダで次のコマンドを実行します。アカウントの権限によっては、コマンドを sudo モードで実行することが必要な場合があります。

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    コマンドを実行すると、ローカルに custom-terraform-runtime:1.0 Docker イメージが作成されます。

  7. Cloud Assembly で、[インフラストラクチャ] > [接続] > [統合] の順に選択して Terraform ランタイム統合に移動します。
  8. custom-terraform-runtime:1.0 イメージを使用するようにランタイム コンテナ設定を作成または編集します。
    Terraform ランタイム プロキシ イメージ