このページでは、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 です。プレビュー識別子の制約の詳細については、プレビュー名をご覧ください。
- 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 が使用されます。
- 省略可: 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 です。プレビュー識別子の制約の詳細については、プレビュー名をご覧ください。
- 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 が使用されます。
- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager で管理されている Terraform プロバイダを使用する場合は、
SERVICE_MAINTAINED
に設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloud用の Terraform プロバイダを使用するをご覧ください。
プレビュー コマンドで新しい値を指定しない限り、Terraform 構成、変数、サービス アカウントなどのデプロイのフィールドはプレビューに自動的に統合されます。
プレビューを作成したので、結果をエクスポートして表示し、デプロイの計画を確認できます。
次のステップ
- プレビュー結果をエクスポートして表示する
- Infra Manager を使用してリソースをデプロイします。
- デプロイを自動化する。
- Infra Manager での Terraform の詳細を確認する。