このページでは、Infrastructure Manager を使用して、Terraform 構成で定義されたリソースのデプロイをプレビューする方法について説明します。
プレビューには、特定の Terraform 構成を有効にするアクションが記述されています。新しいデプロイを作成する前、またはデプロイを更新する前に、デプロイをプレビューして、プロビジョニングが予定されているリソースを確認できます。
プレビューでは Terraform plan コマンドが実行されます。このページは、Terraform に精通していることを前提としています。詳細については、Terraform と Infrastructure Manager をご覧ください。
プレビューを作成するには、Terraform 構成が、サポートされている Terraform バージョンのいずれかと互換性がある必要があります。
始める前に
- Infra Manager を有効にする。
- プレビューの作成に必要な IAM 権限(
roles/config.admin)があることを確認します。 - 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
- プレビューする Terraform 構成を特定します。この Terraform 構成が制約に準拠していることを確認します。これには、構成に機密データが含まれていないことも含まれます。
デプロイの更新をプレビューする
デプロイの更新に使用する Terraform 構成は、ストレージ バケットまたは Git リポジトリに保存できます。
この Terraform 構成を使用して、更新をプレビューすることもできます。
Cloud Storage バケットに保存されている Terraform 構成を使用してプレビューする
デプロイを更新しても、既存のリソースの一部が変更されないことがあります。更新をプレビューすると、プロビジョニングまたは削除が予定されているリソースと、変更が予定されていないリソースが表示されます。
更新するデプロイを特定します。
Terraform 構成が Cloud Storage バケットにアップロードされていることを確認します。詳細については、構成をストレージ バケットにアップロードするをご覧ください。
ストレージ バケットを使用すると、構成へのアクセスを制御できます。Git リポジトリに保存されている Terraform 構成や、ローカルマシンに保存されている 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 \ --provider-source=SERVICE_MAINTAINED
次のように置き換えます。
- 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 は、更新するデプロイのデプロイ識別子です。
- 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 のバージョンをご覧ください。このオプション フラグを削除すると、Infra Manager は既存のデプロイの Terraform バージョンを使用するか、デフォルトでサポートされている最新の無料枠バージョン(
1.5.7)を使用します。プレビューでは、有料の Terraform バージョンに対して料金は発生しません。- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager が管理する Terraform プロバイダを使用するには、
SERVICE_MAINTAINEDに設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloudで 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 \ --provider-source=SERVICE_MAINTAINED
次のように置き換えます。
- 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 は、更新するデプロイのデプロイ識別子です。
- 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 のバージョンをご覧ください。このオプション フラグを削除すると、Infra Manager は既存のデプロイの Terraform バージョンを使用するか、デフォルトでサポートされている最新の無料枠バージョン(
1.5.7)を使用します。プレビューでは、有料の Terraform バージョンに対して料金は発生しません。- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager が管理する Terraform プロバイダを使用するには、
SERVICE_MAINTAINEDに設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloudで Terraform プロバイダを使用するをご覧ください。
Terraform 構成、変数、サービス アカウントなどのデプロイのフィールドは、プレビュー コマンドで新しい値を指定しない限り、プレビューに自動的にマージされます。
プレビューを作成したので、結果をエクスポートして表示し、デプロイの計画を確認できます。
次のステップ
- プレビュー結果をエクスポートして表示する
- Infra Manager を使用してリソースをデプロイします。
- デプロイを自動化する。
- Infra Manager での Terraform の詳細を確認する。