デプロイメントの更新をプレビューする

このページでは、Infrastructure Manager を使用して、Terraform 構成で定義されたリソースのデプロイをプレビューする方法について説明します。

プレビューには、特定の Terraform 構成を起動するアクションが記述されています。新しいデプロイを作成する前、またはデプロイを更新する前に、デプロイをプレビューして、プロビジョニングが予定されているリソースを確認できます。

プレビューでは Terraform plan コマンドが実行されます。このページは、Terraform に精通していることを前提としています。詳細については、Terraform と Infrastructure Manager をご覧ください。

プレビューを作成するには、Terraform 構成がサポートされている Terraform バージョンのいずれかと互換性がある必要があります。

始める前に

  1. Infra Manager を有効にします
  2. プレビューの作成に必要な IAM 権限(roles/config.admin)があることを確認します。
  3. 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
  4. プレビューする Terraform 構成を特定します。この Terraform 構成が制約に準拠していることを確認します。たとえば、構成に機密データが含まれていないことを確認します。

デプロイの更新をプレビューする

デプロイの更新に使用する Terraform 構成は、ストレージ バケットまたは Git リポジトリに配置できます。

この Terraform 構成を使用して、更新をプレビューすることもできます。

Cloud Storage バケットに保存された Terraform 構成を使用してプレビューする

デプロイを更新しても、既存のリソースの一部は変更されないことがあります。更新をプレビューすると、プロビジョニングまたは削除が予定されているリソースと、変更が予定されていないリソースを確認できます。

  1. 更新するデプロイを特定します。

  2. Terraform 構成が Cloud Storage バケットにアップロードされていることを確認します。詳細については、構成をストレージ バケットにアップロードするをご覧ください。

    ストレージ バケットを使用すると、構成へのアクセスを制御できます。Git リポジトリに保存されている Terraform 構成や、ローカルマシンに保存されている Terraform 構成をデプロイすることもできます。

  3. 更新をプレビューするには:

    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=VALUEINPUT_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 構成を使用してプレビューする

デプロイを更新しても、既存のリソースの一部は変更されないことがあります。更新をプレビューすると、プロビジョニングまたは削除が予定されているリソースと、変更が予定されていないリソースを確認できます。

  1. Terraform 構成が非公開 Git リポジトリに保存されている場合は、まだ接続していない場合は、Cloud Build を使用して GitHub ホストGitHub リポジトリに接続し、リポジトリへの Infra Manager アクセス権を付与します。
  2. デプロイを更新するには:

    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=VALUEINPUT_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 構成、変数、サービス アカウントなどのデプロイのフィールドはプレビューに自動的に統合されます。

プレビューを作成したので、結果をエクスポートして表示し、デプロイの計画を確認できます。

次のステップ