Cloud Assembly ユーザーが、インターネットから切断されている間に Terraform 統合を設計および実行する必要がある場合は、次の例に従ってランタイム環境を設定します。
次の手順では、ユーザーが独自の Docker レジストリを持っており、インターネットに接続することなくそのリポジトリにアクセスできることを想定しています。
カスタム コンテナ イメージの作成
- 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"
- カスタム コンテナ イメージを作成、タグ付けして、切断されているサイトにある独自の Docker リポジトリにプッシュします。
- 切断されているサイトにある Cloud Assembly で、 の順に選択して Terraform ランタイム統合に移動します。
- カスタム コンテナ イメージのリポジトリを追加するために、ランタイム コンテナ設定を作成または編集します。作成したカスタム コンテナ イメージの名前は、たとえば
registry.ourcompany.com/project1/image1:latest
のようになります。
Terraform CLI のローカルでのホスト
- Terraform CLI バイナリをダウンロードします。
- Terraform CLI バイナリをローカルの Web または FTP サーバにアップロードします。
- Cloud Assembly で、 の順に選択します。
- ローカル サーバでホストされる Terraform CLI バイナリの URL が含まれるように Terraform バージョンを作成または編集します。
- ローカル Web サーバまたは FTP サーバがログイン認証を必要とする場合は、[基本認証] を選択し、サーバにアクセスできるユーザー名とパスワードの認証情報を入力します。
認証タイプを変更するには、Cloud Assembly でのクラウド管理者ロールが必要です。
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