デプロイをプレビューする

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

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

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

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

始める前に

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

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

新しいデプロイをプレビューする

プレビューする Terraform 構成は、ストレージ バケットまたは Git リポジトリに配置できます。

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

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

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

  2. 更新をプレビューする手順は次のとおりです。

    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 \
        --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
    

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

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

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

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

    • 省略可: ANNOTATION_KEYANNOTATION_VALUE は、Infra Manager デプロイメントに関連付けることができる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。

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

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

Git リポジトリに保存されている Terraform 構成を使用してプレビューする

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

Git リポジトリに保存されているデプロイメントを更新するには:

  1. 限定公開の 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 \
        --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 \
        --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
    

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

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

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

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

  • 省略可: ANNOTATION_KEYANNOTATION_VALUE は、Infra Manager デプロイメントに関連付けることができる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。

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

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

デプロイをプレビューした後、デプロイを作成してリソースをプロビジョニングできます。詳細については、リソースをデプロイするをご覧ください。

次のステップ