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

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

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

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

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

始める前に

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

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

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

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

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

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

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

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

    ストレージ バケットを使用すると、構成へのアクセスを制御できます。Git リポジトリまたはローカルマシンに保存されている 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
    

    以下のように置き換えます。

    • 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=VALUEINPUT_2_NAME=VALUE: Terraform 構成の入力値(デフォルトで定義されていない値を含む)。たとえば、リソースをデプロイするプロジェクトを project_id=my-project として指定できます。

      すべての入力値が構成でデフォルトで定義されている場合、このフラグは省略可能です。

    • 省略可: TERRAFORM_VERSION: Infra Manager がデプロイメントの作成に使用する Terraform のバージョン。サポートされているバージョンの一覧については、サポートされている Terraform バージョンをご覧ください。このオプション フラグを削除すると、サポートされている最新バージョンの 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
    

    以下のように置き換えます。

    • 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=VALUEINPUT_2_NAME=VALUE: Terraform 構成の入力値(デフォルトで定義されていない値を含む)。たとえば、リソースをデプロイするプロジェクトを project_id=my-project として指定できます。

      すべての入力値が構成でデフォルトで定義されている場合、このフラグは省略可能です。

    • 省略可: TERRAFORM_VERSION: Infra Manager がデプロイメントの作成に使用する Terraform のバージョン。サポートされているバージョンの一覧については、サポートされている Terraform バージョンをご覧ください。このオプション フラグを削除すると、サポートされている最新バージョンの Terraform が使用されます。

プレビュー コマンドで新しい値を指定しない限り、Terraform 構成、変数、サービス アカウントなどのデプロイのフィールドはプレビューに自動的に統合されます。

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

次のステップ