このページでは、Infrastructure Manager を使用して、Terraform 構成で定義されたGoogle Cloud リソースのセットをプロビジョニングする方法について説明します。
リソースをプロビジョニングせずにデプロイをプレビューするには、デプロイをプレビューするをご覧ください。
複数のプロジェクトと複数のロケーションにデプロイできます。サービス アカウントには、リソースがデプロイされているリソースとプロジェクトに対する権限が必要です。権限の一覧については、IAM によるアクセス制御をご覧ください。
このページは、Terraform に精通していることを前提としています。詳細については、Terraform と Infra Manager をご覧ください。
始める前に
- Infra Manager を有効にします。
- デプロイメントの作成に必要な IAM 権限(
roles/config.admin
)があることを確認します。 - 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
- デプロイする Terraform 構成を特定します。この Terraform 構成が制約に準拠していることを確認します。特に、構成に機密データが含まれていないことを確認してください。
- リソースを構成する前にデプロイをプレビューする場合は、デプロイをプレビューするをご覧ください。
- 目的のインフラストラクチャに関連付けられているプロダクトの組織の割り当てを確認します。対象のインフラストラクチャが、デプロイで使用するプロダクトに対する組織の割り当てを超えている場合、デプロイ エラーが発生する可能性があります。詳細については、割り当てと上限をご覧ください。
構成に固有の権限を付与する
Terraform 構成で指定された Google Cloud リソースをデプロイするには、Infra Manager の呼び出しに使用するサービス アカウントに、デプロイするリソースに固有の必要な権限が必要です。
これらの権限は、Infra Manager サービスを使用するのに必要な権限とは別に必要です。
Google Cloud リソースに対する権限の付与と、必要なプロジェクトへのアクセス権の確保の詳細については、サービス アカウントを構成するをご覧ください。
非公開の Git リポジトリとホストを Cloud Build に接続する
プライベート Git リポジトリから Terraform 構成をデプロイする場合は、Git ホストとリポジトリを Cloud Build に接続する必要があります。
GitHub
GitHub Enterprise
GitLab
GitLab Enterprise
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] ページに移動します。
- [作成] をクリックして、新しいデプロイメントを作成します。
[デプロイの詳細] ページで、デプロイの初期パラメータを設定します。
以下のように置き換えます。
- Deployment ID: [Deployment 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 構成のデプロイを開始します。[Deployments] ページに、デプロイとそのステータスがリストに追加されます。 デプロイの詳細を確認するには、デプロイを選択して [Deployment の詳細] ページに移動します。
- 完了しました。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 \ --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
- PROJECT_ID: Infra Manager が実行されるプロジェクト ID。
- LOCATION: Infra Manager が実行されるロケーション。有効なロケーションの一覧については、Infra Manager のロケーションをご覧ください。
- DEPLOYMENT_ID: 指定したデプロイ 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 ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。
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 \ --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
- PROJECT_ID: Infra Manager が実行されるプロジェクト ID。
- LOCATION: Infra Manager が実行されるロケーション。有効なロケーションの一覧については、Infra Manager のロケーションをご覧ください。
- DEPLOYMENT_ID: 指定したデプロイ 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 ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。
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 \ --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
- PROJECT_ID: Infra Manager が実行されるプロジェクト ID。
- LOCATION: Infra Manager が実行されるロケーション。有効なロケーションの一覧については、Infra Manager のロケーションをご覧ください。
- DEPLOYMENT_ID: 指定したデプロイ 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 ペアを表します。アノテーションとラベルの使用と制約について詳しくは、アノテーションとラベルをご覧ください。
次のステップ
- Google Cloudで Terraform を使用する方法の詳細を確認する。
- デプロイを自動化する。
- デプロイメントを更新する。
- デプロイの状態を表示する。
- デプロイされたリソースを表示する。
- デプロイメントを削除する。