このページでは、Infrastructure Manager を使用して、Terraform 構成で定義された一連のGoogle Cloud リソースをプロビジョニングする方法について説明します。
リソースをプロビジョニングせずにデプロイをプレビューするには、デプロイをプレビューするをご覧ください。
複数のプロジェクトと複数のロケーションにデプロイできます。サービス アカウントには、リソースがデプロイされているリソースとプロジェクトに対する権限が必要です。権限のリストについては、IAM によるアクセス制御をご覧ください。
このページは、Terraform に精通していることを前提としています。詳細については、Terraform と Infra Manager をご覧ください。
始める前に
- Infra Manager を有効にします。
- デプロイの作成に必要な IAM 権限(
roles/config.admin)があることを確認します。 - 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
- デプロイする Terraform 構成を特定します。この Terraform 構成が制約に準拠していることを確認します。特に、構成にセンシティブ データが含まれていないことを確認します。
- リソースを構成する前にデプロイをプレビューする場合は、デプロイをプレビューするをご覧ください。
目的のインフラストラクチャに関連付けられているプロダクトの組織の割り当てを確認します。目的のインフラストラクチャが、デプロイで使用するプロダクトの組織の割り当てを超えている場合、デプロイ エラーが発生することがあります。詳細については、割り当てと上限をご覧ください。
Infra Manager は、Cloud Build を使用して、デプロイの作成、更新、プレビューを行います。デプロイの作成と更新のタイムアウトは 2 時間ですが、デプロイのプレビューのタイムアウトは 1 時間です。
この上限を超える単一の構成内で複数のリソースを管理している場合は、構成を複数のデプロイに分割する必要があります。
構成に固有の権限を付与する
Terraform 構成で指定された Google Cloud リソースをデプロイするには、Infra Manager の呼び出しに使用するサービス アカウントに、デプロイするリソースに固有の必要な権限が必要です。
これらの権限は、Infra Manager サービスを使用するために必要な権限に加えて必要です。
Google Cloud リソースの権限付与と、必要なプロジェクトへのアクセス権の確保の詳細については、サービス アカウントを構成するをご覧ください。
Connect your private Git repository and host to Cloud Build
If you are deploying a Terraform configuration from a private Git repository, you need to connect your Git host and repository to Cloud Build.
GitHub
GitHub Enterprise
GitLab
GitLab Enterprise
Developer Connect
Terraform 構成を使用してデプロイを作成する
Infra Manager を使用して、Terraform 構成を次の方法でデプロイできます。
- 推奨: Google Cloud コンソールの Infra Manager を使用して、ソースの選択、デプロイの詳細の表示、プレビュー、Terraform 構成のデプロイを行います。 Google Cloud コンソールの Infra Manager を使用して、Cloud Storage バケットと Git リポジトリからデプロイできます。
- Google Cloud CLI の Infra Manager を使用して、次の場所から Terraform 構成をデプロイします。
- Cloud Storage バケット
- Git リポジトリ
- ローカル ディレクトリ
Infra Manager で使用できる Terraform 構成の例とテンプレートについては、 Google Cloud用の Terraform モジュールとブループリントをご覧ください。
選択したワークフローのタブを選択して、デプロイの作成の詳細を確認します。
コンソール
このセクションでは、 Google Cloud コンソールの Infra Manager を使用して Terraform 構成をデプロイする方法について説明します。
- Google Cloud コンソールで、[Infra Manager] ページに移動します。
- [作成] をクリックして、新しいデプロイを作成します。
[デプロイの詳細] ページで、デプロイの初期パラメータを設定します。
次のように置き換えます。
- デプロイ ID: [デプロイ ID] フィールドに、デプロイのわかりやすい名前を入力します。命名制約の詳細については、デプロイ名のドキュメントをご覧ください。
- リージョン: プルダウンからサポートされているリージョンを選択します。
- Terraform バージョン: プルダウンからサポートされている Terraform バージョンを選択します。使用可能な Terraform バージョンのリストは、選択したリージョンに基づいて自動的に入力されます。
- サービス アカウント: 既存のサービス アカウントを選択するか、新しいサービス アカウントを作成します。Infra Manager は、Terraform 構成で指定されたインフラストラクチャに基づいて権限を自動的に検証します。サービス アカウントと Infra Manager の操作の詳細については、サービス アカウントを構成するをご覧ください。
- Terraform 構成のソース: 切り替えをクリックして、デプロイする Terraform 構成のソースとして [Git] または [Cloud Storage] を選択します。
- Git の場合は、次のように置き換えます。
- Git リポジトリ: 公開または非公開の Git リポジトリの URL、ブランチ、タグを指定します。
非公開の Git リポジトリを指定する場合は、ホストとリポジトリを Cloud Build に接続していることを確認してください。 - 省略可: Git ディレクトリ: Terraform 構成を含む Git リポジトリ内のディレクトリ。
- 省略可: Git 参照: 構成の Git 参照。参照を指定しない場合、Git リポジトリのデフォルトで構成されたブランチが使用されます。
- Git リポジトリ: 公開または非公開の Git リポジトリの URL、ブランチ、タグを指定します。
- [Cloud Storage バケット] で、次のように置き換えます。
- ソース: 構成が保存されているストレージ バケットの名前。
- Git の場合は、次のように置き換えます。
[Terraform の詳細] ページで、[キー] フィールドと [値] フィールドを使用して、Terraform 構成の入力値のリストを入力します。
値は、Terraform 構成の入力値(デフォルトで定義されていないものを含む)にできます。入力値がすべて Terraform 構成でデフォルトで定義されている場合、これらの値は省略可能です。[続行] をクリックします。
[詳細設定] ページで、デプロイの省略可能なパラメータを設定します。
次のように置き換えます。
- ラベル: ラベルとアノテーションは、自由形式のテキストの Key-Value ペアです。これらを使用して、リソースに関連付けられた任意の情報を付加できます。詳細については、アノテーションのドキュメントをご覧ください。
- ワーカープール: Cloud Build ジョブが実行されるワーカープール リソース。ワーカープールの形式は
projects/{project}/locations/{location}/workerPools/{workerPoolId}です。 - アーティファクト Cloud Storage バケット: Cloud Storage 内の Cloud Build ログとアーティファクトのロケーション。パスの形式は
gs://{bucket}/{folder}です。
- [デプロイを作成] をクリックして、Terraform 構成のデプロイを開始します。[デプロイ] ページで、デプロイがステータスとともにリストに追加されます。 デプロイの詳細については、デプロイを選択して [デプロイの詳細] ページに移動します。
- 完了しました。Infra Manager を使用して Terraform 構成をデプロイした。
[続行] をクリックします。
gcloud CLI
このセクションでは、Cloud Storage バケットに保存されている Terraform 構成をデプロイする方法について説明します。ストレージ バケットを使用すると、構成へのアクセスを制御できます。
- Terraform 構成が Cloud Storage バケットにあることを確認します。詳細については、構成をストレージ バケットにアップロードするをご覧ください。
ストレージ バケットが Infra Manager を実行しているプロジェクトとは別のプロジェクトにある場合は、Infra Manager のサービス アカウントにバケットの読み取り権限があることを確認する必要があります。詳細については、サービス アカウントを構成するをご覧ください。
ストレージ バケットが Infra Manager と同じプロジェクトにある場合、バケットに対する読み取り権限はすでに有効になっています。
Terraform 構成をデプロイします。
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: 指定したデプロイ 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 バージョンをご覧ください。この省略可能なフラグを削除すると、サポートされている最新バージョンの Terraform が使用されます。
- 省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager デプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。
- Optional: PROVIDER_SOURCE: Determines which Terraform provider
for Google Cloud the deployment uses. Set to
SERVICE_MAINTAINEDto use the Infra Manager maintained Terraform provider. Omit this field to use the HashiCorp-maintained Terraform provider. For more information, see Use the Terraform provider for Google Cloud.
gcloud CLI
このセクションでは、Git リポジトリに保存されている Terraform 構成を操作する方法について説明します。
- Git がインストールされていることを確認します。
- Terraform 構成が
非公開の Git リポジトリ に保存されている場合は、Git ホストとリポジトリが Cloud Build に接続されていることを確認します。 Terraform 構成をデプロイします。
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: 指定したデプロイ 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 バージョンをご覧ください。この省略可能なフラグを削除すると、サポートされている最新バージョンの Terraform が使用されます。
- 省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager デプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。
- Optional: PROVIDER_SOURCE: Determines which Terraform provider
for Google Cloud the deployment uses. Set to
SERVICE_MAINTAINEDto use the Infra Manager maintained Terraform provider. Omit this field to use the HashiCorp-maintained Terraform provider. For more information, see Use the Terraform provider for Google Cloud.
gcloud CLI
このセクションでは、ローカルマシンに保存されている Terraform 構成を使用する方法について説明します。
- Cloud Shell を使用する場合は、構成を Cloud Shell にアップロードする必要があります。詳細については、Cloud Shell を使用したファイルの管理をご覧ください。
Terraform 構成をデプロイします。
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: 指定したデプロイ 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 バージョンをご覧ください。この省略可能なフラグを削除すると、サポートされている最新バージョンの Terraform が使用されます。
- 省略可: ANNOTATION_KEY と ANNOTATION_VALUE は、Infra Manager デプロイに適用できる自由形式のテキストの Key-Value ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。
- Optional: PROVIDER_SOURCE: Determines which Terraform provider
for Google Cloud the deployment uses. Set to
SERVICE_MAINTAINEDto use the Infra Manager maintained Terraform provider. Omit this field to use the HashiCorp-maintained Terraform provider. For more information, see Use the Terraform provider for Google Cloud.
次のステップ
- Google Cloudでの Terraform の詳細を確認する。
- デプロイを自動化する。
- デプロイを更新する。
- デプロイの状態を表示する。
- デプロイされたリソースを表示する。
- デプロイを削除する。