Cloud Assembly ユーザーが、インターネットから切断されている間に Terraform 統合を設計および実行する必要がある場合は、次の例に従ってランタイム環境を設定します。

注: イメージ作成のためのソースを取得するために、セットアップではインターネットへの短時間の接続が必要です。一時的な接続が不可能な場合は、これらの手順を、切断されているサイトの外部で実行することが必要になる可能性があります。

次の手順では、ユーザーが独自の Docker レジストリを持っており、インターネットに接続することなくそのリポジトリにアクセスできることを想定しています。

カスタム コンテナ イメージの作成

  1. Terraform プロバイダ プラグイン バイナリを含むカスタム コンテナ イメージを作成します。

    次の Dockerfile は、Terraform GCP プロバイダを使用してカスタム イメージを作成する例を示しています。

    Dockerfile で基本イメージ projects.registry.vmware.com/vra/terraform:latest をダウンロードするには、projects.registry.vmware.com にある VMware Harbor レジストリにインターネット経由でアクセスする必要があります。

    ファイアウォール設定またはプロキシ設定により、イメージのビルドが失敗する可能性があります。また、Terraform プロバイダ プラグイン バイナリをダウンロードするには、releases.hashicorp.com へのアクセスが必要になる場合があります。ただし、必要な場合は、プライベート レジストリを使用してプラグイン バイナリを提供することもできます。

    FROM projects.registry.vmware.com/vra/terraform:latest as final
     
    # Create provider plug-in directory
    ARG plugins=/tmp/terraform.d/plugin-cache/linux_amd64
    RUN mkdir -m 777 -p $plugins
      
    # Download and unzip all required provider plug-ins from hashicorp to provider directory
    RUN cd $plugins \
        && wget -q https://releases.hashicorp.com/terraform-provider-google/3.58.0/terraform-provider-google_3.58.0_linux_amd64.zip \
        && unzip *.zip \
        && rm *.zip
      
    # For "terraform init" configure terraform CLI to use provider plug-in directory and not download from internet
    ENV TF_CLI_ARGS_init="-plugin-dir=$plugins -get-plugins=false"
  2. カスタム コンテナ イメージを作成、タグ付けして、切断されているサイトにある独自の Docker リポジトリにプッシュします。
  3. 切断されているサイトにある Cloud Assembly で、[インフラストラクチャ] > [接続] > [統合] の順に選択して Terraform ランタイム統合に移動します。
  4. カスタム コンテナ イメージのリポジトリを追加するために、ランタイム コンテナ設定を作成または編集します。作成したカスタム コンテナ イメージの名前は、たとえば registry.ourcompany.com/project1/image1:latest のようになります。
    Terraform コンテナ イメージ

Terraform CLI のローカルでのホスト

  1. Terraform CLI バイナリをダウンロードします。
  2. Terraform CLI バイナリをローカルの Web または FTP サーバにアップロードします。
  3. Cloud Assembly で、[インフラストラクチャ] > [構成] > [Terraform バージョン] の順に選択します。
  4. ローカル サーバでホストされる Terraform CLI バイナリの URL が含まれるように Terraform バージョンを作成または編集します。
  5. ローカル Web サーバまたは FTP サーバがログイン認証を必要とする場合は、[基本認証] を選択し、サーバにアクセスできるユーザー名とパスワードの認証情報を入力します。

    認証タイプを変更するには、Cloud Assembly でのクラウド管理者ロールが必要です。

    Terraform CLI の URL

Terraform 構成の設計および展開

ランタイムが設定されたら、Terraform 構成ファイルを git に追加して、そのクラウド テンプレートを設計し、展開できます。

最初に、Cloud Assembly での Terraform 構成の準備を参照してください。

トラブルシューティング

展開時は、Cloud Assembly で展開を開きます。[履歴] タブで Terraform イベントを探し、右側にある [ログの表示] をクリックします。ローカル Terraform プロバイダが機能している場合は、ログに次のメッセージが示されます。

Initializing provider plugins

Terraform has been successfully initialized

ログをより堅牢にするには、クラウド テンプレート コードを手動で編集して、次の例に示すように TF_LOG: DEBUG を追加します。

resources:
  terraform:
    type: Cloud.Terraform.Configuration
    properties:
      providers:
        - name: google
          # List of available cloud zones: gcp/us-west1
          cloudZone: gcp/us-west1
      environment:
        # Configure terraform CLI debug log settings
        TF_LOG: DEBUG
      terraformVersion: 0.12.29
      configurationSource:
        repositoryId: fc569ef7-f013-4489-9673-6909a2791071
        commitId: 3e00279a843a6711f7857929144164ef399c7421
        sourceDirectory: gcp-simple

独自の基本イメージの作成

VMware は、projects.registry.vmware.com/vra/terraform:latest で基本イメージを更新する場合がありますが、そのイメージは古く、脆弱性が含まれている可能性があります。

独自の基本イメージを構築するには、代わりに次の Dockerfile を使用します。

FROM alpine:latest as final
RUN apk add --no-cache git wget curl openssh