このページでは、Infrastructure Manager を使用して、Terraform 構成で定義されたリソースのデプロイをプレビューする方法について説明します。
プレビューには、特定の Terraform 構成をアクチュエートするアクションが記述されます。新しいデプロイを作成またはデプロイを更新する前に、デプロイをプレビューして、プロビジョニングが計画されているリソースを確認できます。
プレビューでは Terraform plan
コマンドが実行されます。このページは、Terraform に精通していることを前提としています。詳細については、Terraform と Infrastructure Manager をご覧ください。
プレビューを作成するには、Terraform 構成がサポートされている Terraform バージョンのいずれかと互換性がある必要があります。
始める前に
- Infra Manager を有効にします。
- プレビューの作成に必要な IAM 権限(
roles/config.admin
)があることを確認します。 - 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
- プレビューする Terraform 構成を特定します。この Terraform 構成が、構成に機密データが含まれていないことなど、制約に準拠していることを確認します。
デプロイメントの更新をプレビューする
Deployment の更新に使用する Terraform 構成は、ストレージ バケットまたは Git リポジトリに配置できます。
この Terraform 構成を使用して、更新をプレビューします。
Cloud Storage バケットに保存されている Terraform 構成を使用してプレビューする
デプロイを更新しても、一部の既存リソースが変更されない場合があります。更新をプレビューすると、プロビジョニングまたは削除が予定されているリソースと、変更が予定されていないリソースを確認できます。
更新するデプロイメントを特定します。
Terraform 構成が Cloud Storage バケットにアップロードされていることを確認します。詳細については、構成をストレージ バケットにアップロードするをご覧ください。
ストレージ バケットを使用すると、構成へのアクセスを制御できます。Git リポジトリまたはローカルマシンに保存されている Terraform 構成をデプロイすることもできます。
更新をプレビューする手順は次のとおりです。
gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --deployment=projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --gcs-source gs://BUCKET_NAME/OBJECT_NAME \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION
以下のように置き換えます。
- PROJECT_ID は、Infrastructure Manager が実行されているプロジェクト ID です。
- LOCATION は、Infra Manager が実行されるロケーションです。有効なロケーションの一覧については、Infrastructure Manager のロケーションをご覧ください。
- PREVIEW_ID は、指定するプレビュー ID です。プレビュー ID の制約の詳細については、プレビュー名をご覧ください。
- SERVICE_ACCOUNT は、Infra Manager の呼び出しに使用するサービス アカウントの名前です。
- SERVICE_ACCOUNT_PROJECT_ID は、サービス アカウントのプロジェクト ID です。通常、これは Infra Manager が実行されているプロジェクトと同じです。
- DEPLOYMENT_ID は、更新するデプロイメントのデプロイ ID です。
- BUCKET_NAME は、構成が保存されているストレージ バケットの名前です。
OBJECT_NAME は構成ファイルのオブジェクト名です。このオブジェクトはディレクトリまたは ZIP ファイルにできますが、Terraform ファイルにはできません。オブジェクトのバージョニングを使用している場合は、オブジェクトの世代番号を指定することもできます。詳細については、バージョニングされたオブジェクトを使用するをご覧ください。
ストレージ バケットが Terraform 構成のルートパスである場合、OBJECT_NAME は省略可能です。
INPUT_1_NAME=VALUE と INPUT_2_NAME=VALUE: Terraform 構成の入力値(デフォルトで定義されていない値を含む)。たとえば、リソースをデプロイするプロジェクトを
project_id=my-project
として指定できます。すべての入力値が構成でデフォルトで定義されている場合、このフラグは省略可能です。
省略可: TERRAFORM_VERSION: Infra Manager がデプロイメントの作成に使用する Terraform のバージョン。サポートされているバージョンの一覧については、サポートされている Terraform バージョンをご覧ください。このオプション フラグを削除すると、サポートされている最新バージョンの Terraform が使用されます。
Terraform 構成、変数、サービス アカウントなど、デプロイのフィールドは、プレビュー コマンドで新しい値を指定しない限り、プレビューに自動的に統合されます。
プレビューを作成したので、結果をエクスポートして表示して、デプロイのプランを確認できます。
Git リポジトリに保存されている Terraform 構成を使用してプレビューする
デプロイを更新しても、一部の既存リソースが変更されない場合があります。更新をプレビューすると、プロビジョニングまたは削除が予定されているリソースと、変更が予定されていないリソースを確認できます。
- Terraform 構成がプライベート Git リポジトリに保存されている場合は、まだ接続していない場合は、Cloud Build を使用して GitHub ホストと GitHub リポジトリに接続し、リポジトリへの Infra Manager のアクセス権を付与します。
デプロイメントを更新するには:
gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --deployment=projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --git-source-repo="GIT_REPO" \ --git-source-directory="DIRECTORY" \ --git-source-ref="REF" \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION
以下のように置き換えます。
- PROJECT_ID は、Infrastructure Manager が実行されているプロジェクト ID です。
- LOCATION は、Infra Manager が実行されるロケーションです。有効なロケーションの一覧については、Infrastructure Manager のロケーションをご覧ください。
- PREVIEW_ID は、指定するプレビュー ID です。プレビュー ID の制約の詳細については、プレビュー名をご覧ください。
- SERVICE_ACCOUNT は、Infra Manager の呼び出しに使用するサービス アカウントの名前です。
- SERVICE_ACCOUNT_PROJECT_ID は、サービス アカウントのプロジェクト ID です。通常、これは Infra Manager が実行されているプロジェクトと同じです。
- DEPLOYMENT_ID は、更新するデプロイメントのデプロイ ID です。
- GIT_REPO: Git リポジトリ。
- DIRECTORY: Terraform 構成を含むディレクトリ。
- REF: 構成の Git リファレンス。参照は省略可能です。参照を指定しない場合は、Git リポジトリのデフォルトで構成されたブランチが使用されます。
INPUT_1_NAME=VALUE と INPUT_2_NAME=VALUE: Terraform 構成の入力値(デフォルトで定義されていない値を含む)。たとえば、リソースをデプロイするプロジェクトを
project_id=my-project
として指定できます。すべての入力値が構成でデフォルトで定義されている場合、このフラグは省略可能です。
省略可: TERRAFORM_VERSION: Infra Manager がデプロイメントの作成に使用する Terraform のバージョン。サポートされているバージョンの一覧については、サポートされている Terraform バージョンをご覧ください。このオプション フラグを削除すると、サポートされている最新バージョンの Terraform が使用されます。
プレビュー コマンドで新しい値を指定しない限り、Terraform 構成、変数、サービス アカウントなどのデプロイのフィールドはプレビューに自動的に統合されます。
プレビューを作成したので、結果をエクスポートして表示して、デプロイのプランを確認できます。
次のステップ
- プレビュー結果を書き出して表示する
- Infra Manager を使用してリソースをデプロイします。
- デプロイを自動化する。
- Infra Manager での Terraform の詳細を確認する。