このページでは、Infrastructure Manager を使用してデプロイを更新する方法について説明します。Deployment を更新するケースには、次のようなものがあります。
インフラストラクチャを選択した状態に戻す。
デプロイを作成すると、しばらくしてからリソースが変更されることがあります。たとえば、コンソールで作業しているユーザーによって一部のリソースが変更されている可能性があります。元の Terraform 構成を使用してデプロイを更新し、選択した状態に戻すことができます。
インフラストラクチャに変更を実装する。
デプロイを作成した後、インフラストラクチャの変更が必要になる場合があります。たとえば、新しいリソースを追加したり、構成の一部を変更したりします。新しいインフラストラクチャを記述する Terraform 構成を使用して、デプロイを更新できます。
このページは、Terraform に精通していることを前提としています。詳細については、Terraform と Infra Manager をご覧ください。
始める前に
- Infra Manager が有効になっていることを確認します。
- デプロイの作成に必要な IAM 権限(
roles/config.admin)があることを確認します。 - 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
- 更新する Infra Manager のデプロイを特定します。
更新用にデプロイする Terraform 構成を特定します。リビジョンには任意の構成を使用できます。この構成は、すでにデプロイされている構成と同じバージョンまたは更新されたバージョンであることがよくあります。
この Terraform 構成が制約に準拠していることを確認します。これには、構成にセンシティブ データが含まれていないことも含まれます。
目的のインフラストラクチャに関連付けられているプロダクトの組織の割り当てを確認します。目的のインフラストラクチャが、デプロイで使用するプロダクトの組織の割り当てを超えると、デプロイエラーが発生することがあります。詳細については、割り当てと上限をご覧ください。
変更するリソースのデータ移行またはサービス継続に必要な手順を実施します。
リソースを構成する前に更新をプレビューする場合は、デプロイの更新をプレビューするをご覧ください。
構成に固有の権限を付与する
Terraform 構成で指定された Google Cloud リソースをデプロイするには、Infra Manager の呼び出しに使用するサービス アカウントに、次のリソースに固有の権限が必要です。
リビジョンに使用している構成で定義されているGoogle Cloud リソース。
リビジョンに使用している構成で、デプロイに使用されている構成とは異なるリソースが定義されている場合は、両方の構成で定義されているリソースに対する権限が必要です。
構成で定義されたリソースに固有の権限は、サービス アカウントが Infra Manager サービスを使用するために必要な権限に加えて必要です。
Google Cloud リソースに権限を付与し、必要なプロジェクトにアクセスできるようにする方法については、サービス アカウントを構成するをご覧ください。
プライベート Git リポジトリとホストを Cloud Build に接続する
プライベート Git リポジトリから Terraform 構成をデプロイする場合は、Git ホストとリポジトリを Cloud Build に接続する必要があります。
GitHub
GitHub Enterprise
GitLab
GitLab Enterprise
Developer Connect
デプロイメントの更新
デプロイを更新するには、同じデプロイ名を使用して構成をデプロイします。これにより、リビジョンが作成されます。詳細については、デプロイとリビジョンの概要をご覧ください。
既存のデプロイがない場合は、Infra Manager を使用してインフラストラクチャをデプロイするをご覧ください。
リソースをプロビジョニングせずに更新をプレビューするには、デプロイをプレビューするをご覧ください。
選択したワークフローのタブを選択して、デプロイを更新する方法の詳細を確認します。
コンソール
このセクションでは、 Google Cloud コンソールで Infra Manager を使用して Terraform 構成を更新する方法について説明します。
構成をデプロイしてリビジョンを作成します。
- Google Cloud コンソールで、[Infra Manager] ページに移動します。
- [デプロイ] ページの [ID] 列で、更新するデプロイをクリックします。
- デプロイ ID がページのタイトルになっているページで、[編集] をクリックします。
- [デプロイの詳細] ページで、[Terraform のバージョン]、[サービス アカウント]、[Terraform 構成のソース] フィールドを変更できます。 プライベート Git リポジトリを指定する場合は、ホストとリポジトリが Cloud Build に接続されていることを確認します。
[続行] をクリックします。
- [Terraform の詳細] ページで、Terraform 構成の [入力値] を変更できます。[続行] をクリックします。
- [詳細] ページで、[ラベルとアノテーション]、[ワーカープール]、[アーティファクト Cloud Storage バケット] の各フィールドを変更できます。
- デプロイに加えた変更に問題がなければ、[更新] をクリックして更新プロセスを開始します。
デプロイ パラメータとその形式の詳細については、リソースのデプロイのドキュメントをご覧ください。
gcloud CLI
このセクションでは、Cloud Storage バケットに保存されている Terraform 構成をデプロイする方法について説明します。ストレージ バケットを使用すると、構成へのアクセスを制御できます。
- Terraform 構成が Cloud Storage バケットにあることを確認します。詳細については、構成をストレージ バケットにアップロードするをご覧ください。
ストレージ バケットが、Infra Manager を実行しているプロジェクトとは異なるプロジェクトにある場合は、Infra Manager のサービス アカウントにバケットの読み取り権限があることを確認する必要があります。詳細については、サービス アカウントを構成するをご覧ください。
ストレージ バケットが Infra Manager と同じプロジェクトにある場合、バケットに対する読み取り権限はすでに有効になっています。
構成をデプロイしてリビジョンを作成します。
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --gcs-source gs://BUCKET_NAME/OBJECT_NAME \ --quota-validation=QUOTA_VALIDATION \ --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: Infra Manager が実行されるプロジェクト ID。
- LOCATION: Infra Manager が実行されるロケーション。有効なロケーションのリストについては、Infra Manager のロケーションをご覧ください。
- DEPLOYMENT_ID: 指定するデプロイ識別子。デプロイ識別子の制約の詳細については、デプロイ名をご覧ください。
- SERVICE_ACCOUNT_PROJECT_ID は、サービス アカウントのプロジェクト ID です。通常、これは Infra Manager が実行されるプロジェクトと同じです。
- SERVICE_ACCOUNT: Infra Manager の呼び出しに使用するサービス アカウントの名前。
- BUCKET_NAME: 構成が保存されているストレージ バケットの名前。
- OBJECT_NAME: 構成ファイルのオブジェクト名。このオブジェクトはディレクトリまたは ZIP ファイルにできますが、Terraform ファイルにはできません。オブジェクトのバージョニングを使用する場合は、オブジェクトの世代番号を指定することもできます。詳細については、バージョニングされたオブジェクトを使用するをご覧ください。
ストレージ バケットが Terraform 構成のルートパスである場合、OBJECT_NAME は省略可能です。
- 省略可: QUOTA_VALIDATION: デプロイの作成時に、Terraform 構成ファイル内のリソースの割り当て検証を有効にするか、適用するかを決定する値。有効な値は次のとおりです。
ENABLED: Terraform 構成ファイル内のリソースのコンピューティング割り当て検証を有効にします。割り当てが不足しているリソースを可視化します。ENFORCED: 割り当て検証を適用して、Terraform 構成ファイルで定義されたインフラストラクチャに使用可能な割り当てが不足している場合にデプロイが失敗するようにします。
QUOTA_VALIDATION が定義されていない場合、Terraform 構成ファイルの割り当て検証は無効になります。これはデフォルト値です。割り当て検証は、制限付きの Google Cloud リソースに適用されます。詳細については、割り当てと上限をご覧ください。
INPUT_1_NAME と INPUT_2_NAME: Terraform 構成の入力値(デフォルトで定義されていないものを含む)。たとえば、リソースをデプロイするプロジェクトを
project_id=my-projectとして指定できます。すべての入力値が構成でデフォルトで定義されている場合、このフラグは省略可能です。
- 省略可:TERRAFORM_VERSION: Infra Manager がデプロイの更新に使用する Terraform のバージョン。サポートされているバージョンのリストについては、サポートされている Terraform のバージョンをご覧ください。このオプション フラグを削除すると、Infra Manager は既存のデプロイの Terraform バージョンを使用するか、デフォルトでサポートされている最新の無料枠バージョン(
1.5.7)を使用します。有料バージョン(1.16.5など)にアップグレードするには、バージョンを明示的に指定する必要があります。 - 省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager デプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約の詳細については、アノテーションとラベルをご覧ください。
- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager が管理する Terraform プロバイダを使用するには、
SERVICE_MAINTAINEDに設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloudで Terraform プロバイダを使用するをご覧ください。
gcloud CLI
このセクションでは、Git リポジトリに保存されている Terraform 構成を操作する方法について説明します。
- Git がインストールされていることを確認します。
- Terraform 構成が
非公開の Git リポジトリ に保存されている場合は、Git ホストとリポジトリが Cloud Build に接続されていることを確認します。 構成をデプロイしてリビジョンを作成します。
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --git-source-repo="GIT_REPO" \ --git-source-directory="DIRECTORY" \ --git-source-ref="REF" \ --quota-validation=QUOTA_VALIDATION \ --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: Infra Manager が実行されるプロジェクト ID。
- LOCATION: Infra Manager が実行されるロケーション。有効なロケーションのリストについては、Infra Manager のロケーションをご覧ください。
- DEPLOYMENT_ID: 指定するデプロイ識別子。デプロイ識別子の制約の詳細については、デプロイ名をご覧ください。
- SERVICE_ACCOUNT_PROJECT_ID は、サービス アカウントのプロジェクト ID です。通常、これは Infra Manager が実行されるプロジェクトと同じです。
- SERVICE_ACCOUNT: Infra Manager の呼び出しに使用するサービス アカウントの名前。
- GIT_REPO: Git リポジトリ。
- DIRECTORY: Terraform 構成を含むディレクトリ。
- 省略可: REF: 構成の Git 参照。参照は省略可能です。参照を指定しない場合、Git リポジトリのデフォルトで構成されたブランチが使用されます。
- 省略可: QUOTA_VALIDATION: デプロイの作成時に、Terraform 構成ファイル内のリソースの割り当て検証を有効にするか、適用するかを決定する値。有効な値は次のとおりです。
ENABLED: Terraform 構成ファイル内のリソースのコンピューティング割り当て検証を有効にします。割り当てが不足しているリソースを可視化します。ENFORCED: 割り当て検証を適用して、Terraform 構成ファイルで定義されたインフラストラクチャに使用可能な割り当てが不足している場合にデプロイが失敗するようにします。
QUOTA_VALIDATION が定義されていない場合、Terraform 構成ファイルの割り当て検証は無効になります。これはデフォルト値です。割り当て検証は、制限付きの Google Cloud リソースに適用されます。詳細については、割り当てと上限をご覧ください。
INPUT_1_NAME と INPUT_2_NAME: Terraform 構成の入力値(デフォルトで定義されていないものを含む)。たとえば、リソースをデプロイするプロジェクトを
project_id=my-projectとして指定できます。すべての入力値が構成でデフォルトで定義されている場合、このフラグは省略可能です。
- 省略可:TERRAFORM_VERSION: Infra Manager がデプロイの更新に使用する Terraform のバージョン。サポートされているバージョンのリストについては、サポートされている Terraform のバージョンをご覧ください。このオプション フラグを削除すると、Infra Manager は既存のデプロイの Terraform バージョンを使用するか、デフォルトでサポートされている最新の無料枠バージョン(
1.5.7)を使用します。有料バージョン(1.16.5など)にアップグレードするには、バージョンを明示的に指定する必要があります。 - 省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager デプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約の詳細については、アノテーションとラベルをご覧ください。
- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager が管理する Terraform プロバイダを使用するには、
SERVICE_MAINTAINEDに設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloudで Terraform プロバイダを使用するをご覧ください。
gcloud CLI
このセクションでは、ローカルマシンに保存されている Terraform 構成を操作する方法について説明します。
- Cloud Shell を使用する場合は、構成を Cloud Shell にアップロードする必要があります。詳細については、Cloud Shell を使用したファイルの管理をご覧ください。
構成をデプロイしてリビジョンを作成します。
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --local-source="LOCAL_DIRECTORY" \ --quota-validation=QUOTA_VALIDATION \ --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: Infra Manager が実行されるプロジェクト ID。
- LOCATION: Infra Manager が実行されるロケーション。有効なロケーションのリストについては、Infra Manager のロケーションをご覧ください。
- DEPLOYMENT_ID: 指定するデプロイ識別子。デプロイ識別子の制約の詳細については、デプロイ名をご覧ください。
- SERVICE_ACCOUNT_PROJECT_ID は、サービス アカウントのプロジェクト ID です。通常、これは Infra Manager が実行されるプロジェクトと同じです。
- SERVICE_ACCOUNT: Infra Manager の呼び出しに使用するサービス アカウントの名前。
- LOCAL_DIRECTORY: Terraform 構成を保存するローカル ディレクトリ。Cloud Shell を使用している場合、これは構成が保存されている Cloud Shell のディレクトリです。
- 省略可: QUOTA_VALIDATION: デプロイの作成時に、Terraform 構成ファイル内のリソースの割り当て検証を有効にするか、適用するかを決定する値。有効な値は次のとおりです。
ENABLED: Terraform 構成ファイル内のリソースのコンピューティング割り当て検証を有効にします。割り当てが不足しているリソースを可視化します。ENFORCED: 割り当て検証を適用して、Terraform 構成ファイルで定義されたインフラストラクチャに使用可能な割り当てが不足している場合にデプロイが失敗するようにします。
QUOTA_VALIDATION が定義されていない場合、Terraform 構成ファイルの割り当て検証は無効になります。これはデフォルト値です。割り当て検証は、制限付きの Google Cloud リソースに適用されます。詳細については、割り当てと上限をご覧ください。
INPUT_1_NAME と INPUT_2_NAME: Terraform 構成の入力値(デフォルトで定義されていないものを含む)。たとえば、リソースをデプロイするプロジェクトを
project_id=my-projectとして指定できます。すべての入力値が構成でデフォルトで定義されている場合、このフラグは省略可能です。
- 省略可:TERRAFORM_VERSION: Infra Manager がデプロイの更新に使用する Terraform のバージョン。サポートされているバージョンのリストについては、サポートされている Terraform のバージョンをご覧ください。このオプション フラグを削除すると、Infra Manager は既存のデプロイの Terraform バージョンを使用するか、デフォルトでサポートされている最新の無料枠バージョン(
1.5.7)を使用します。有料バージョン(1.16.5など)にアップグレードするには、バージョンを明示的に指定する必要があります。 - 省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager デプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約の詳細については、アノテーションとラベルをご覧ください。
- 省略可: PROVIDER_SOURCE: デプロイで使用する Google Cloud 用の Terraform プロバイダを決定します。Infra Manager が管理する Terraform プロバイダを使用するには、
SERVICE_MAINTAINEDに設定します。HashiCorp が管理する Terraform プロバイダを使用する場合は、このフィールドを省略します。詳細については、 Google Cloudで Terraform プロバイダを使用するをご覧ください。