このページでは、Infrastructure Manager を使用して、Terraform 構成で定義されたリソースのデプロイをプレビューする方法について説明します。
プレビューには、特定の Terraform 構成を有効にするアクションが記述されています。新しいデプロイを作成する前、またはデプロイを更新する前に、デプロイをプレビューして、プロビジョニングが予定されているリソースを確認できます。
プレビューでは Terraform plan コマンドが実行されます。このページは、Terraform に精通していることを前提としています。詳細については、Terraform と Infrastructure Manager をご覧ください。
プレビューを作成するには、Terraform 構成が、サポートされている Terraform バージョンのいずれかと互換性がある必要があります。
始める前に
- Infra Manager を有効にする。
- プレビューの作成に必要な Identity and Access Management 権限(
roles/config.admin)があることを確認します。 - 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
- プレビューする Terraform 構成を特定します。この Terraform 構成が制約に準拠していることを確認します。これには、構成に機密データが含まれていないことも含まれます。
Terraform 構成をストレージ バケットに保存する場合は、Terraform 構成が Cloud Storage バケットにアップロードされていることを確認します。詳細については、構成をストレージ バケットにアップロードするをご覧ください。
ストレージ バケットを使用すると、構成へのアクセスを制御できます。Git リポジトリに保存されている Terraform 構成や、ローカルマシンに保存されている Terraform 構成をデプロイすることもできます。
新しいデプロイをプレビューする
プレビューする Terraform 構成は、ストレージ バケットまたは Git リポジトリに保存できます。
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 \ --gcs-source gs://BUCKET_NAME/OBJECT_NAME \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION \ --annotations="ANNOTATION_KEY=ANNOTATION_VALUE" \ --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 が実行されるプロジェクトと同じです。
- 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(
1.5.7)がデフォルトで使用されます。有料版(1.16.5など)を使用してプレビューするには、バージョンを明示的に指定する必要があります。プレビューでは、有料の Terraform バージョンの料金は発生しません。省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager のデプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約の詳細については、アノテーションとラベルをご覧ください。
- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager が管理する Terraform プロバイダを使用するには、
SERVICE_MAINTAINEDに設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloudで Terraform プロバイダを使用するをご覧ください。
Terraform 構成、変数、サービス アカウントなどのデプロイのフィールドは、プレビュー コマンドで新しい値を指定しない限り、プレビューに自動的にマージされます。
プレビューを作成したので、結果をエクスポートして表示し、デプロイの計画を確認できます。
Git リポジトリに保存されている Terraform 構成を使用してプレビューする
デプロイを更新しても、既存のリソースの一部が変更されないことがあります。更新をプレビューすると、プロビジョニングまたは削除が予定されているリソースと、変更が予定されていないリソースが表示されます。
Git リポジトリに保存されているデプロイを更新するには:
限定公開の 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 \ --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 \ --annotations="ANNOTATION_KEY=ANNOTATION_VALUE" \ --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 が実行されるプロジェクトと同じです。
- 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(
1.5.7)がデフォルトで使用されます。有料版(1.16.5など)を使用してプレビューするには、バージョンを明示的に指定する必要があります。プレビューでは、有料の Terraform バージョンの料金は発生しません。省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager のデプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約の詳細については、アノテーションとラベルをご覧ください。
- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager が管理する Terraform プロバイダを使用するには、
SERVICE_MAINTAINEDに設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloudで Terraform プロバイダを使用するをご覧ください。
Terraform 構成、変数、サービス アカウントなどのデプロイのフィールドは、プレビュー コマンドで新しい値を指定しない限り、プレビューに自動的にマージされます。
プレビューを作成したので、結果をエクスポートして表示し、デプロイの計画を確認できます。
デプロイをプレビューしたら、デプロイを作成してリソースをプロビジョニングできます。詳細については、リソースをデプロイするをご覧ください。
次のステップ
- プレビュー結果をエクスポートして表示する
- Infra Manager を使用してリソースをデプロイします。
- デプロイを自動化する。
- Infra Manager での Terraform の詳細を確認する。