Terraform 構成の作成
組織向けにサービス カタログ ソリューションをキュレートする場合、Terraform 構成(構成)を作成できます。ユーザーは、これを Terraform を使用してデプロイします。構成を作成したら、 カタログに割り当てることでユーザーと共有できます。
このガイドでは、Cloud Build を使用して Terraform Docker イメージの最新バージョンで Terraform コマンドを実行し、Cloud Storage を使用してモジュールや状態ファイルなどの Terraform リソースを保存して管理します。
Terraform の使用に関するリソースとガイドについては、 で Terraform を使用する Google Cloudをご覧ください。
始める前に
次の Identity and Access Management(IAM)ロールを付与されている必要があります。
- カタログ管理者 または カタログ マネージャー (サービス カタログが有効になっているプロジェクトに関連付けられた組織の場合)。Google Cloud Google Cloud このロールを付与されていない場合は、組織の管理者に連絡してアクセス権をリクエストしてください。
- ソリューションを作成するプロジェクトの Storage 管理者。 Google Cloud Terraform 構成が別のプロジェクトにある場合は、Terraform 構成を含むプロジェクトの Storage 管理者ロールも必要です。
- Cloud Build 編集者 (ソリューションを作成するプロジェクト用) Google Cloud
独自のサービス アカウントを使用する場合は、使用するサービス アカウントを含むプロジェクトのサービス アカウント ユーザーロールも必要です。 Google Cloud
これらのロールを付与されていない場合は、組織の管理者に連絡してアクセス権をリクエストしてください。
独自のサービス アカウントを使用する場合は、サービス アカウントに 次の IAM ロールが必要です。
- ソリューションを作成するプロジェクトの Storage 管理者。 Google Cloud Terraform 構成が別のプロジェクトにある場合、サービス アカウントには、Terraform 構成を含むプロジェクトの ストレージ オブジェクト閲覧者 のロールも必要です。
- ログ書き込み Google Cloud ソリューションを作成するプロジェクト。
これらのロールを付与されていない場合は、組織の管理者に連絡してアクセス権をリクエストしてください。
構成を再作成するプロジェクトで次の Cloud Build を設定します。
-
Cloud Build API を有効にします。
API を有効にすると、次のステップで使用する Cloud Build サービス アカウントが自動的に作成されます。API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。 - Cloud Build ページに移動します。
- 左側のパネルで [設定] を選択します。
- [サービス アカウントのメールアドレス] セクションに表示されているサービス アカウントを使用します。
- 独自のサービス アカウントを使用していない場合は、サービス アカウントに次の IAM ロールを付与します。ロールを付与する手順については、
Cloud Build サービス アカウントのアクセス権の構成をご覧ください。
- プロジェクト編集者
(
roles/editor) - Storage 管理者
(
roles/storage.admin)
- プロジェクト編集者
(
-
Cloud Storage への構成ファイルのアップロード
サービス カタログの Terraform 構成ファイルは、Cloud Storage を使用して管理します。
Cloud Storage バケットを作成する
Cloud Storage を設定するには、組織に対してサービス カタログを有効にしたのと同じプロジェクト内でバケットを作成します。
- コンソールで Cloud Storage の Google Cloud [バケット] ページに移動します。
- [ [Create]] をクリックします。
- [バケットの作成] ページでユーザーのバケット情報を入力します。次のステップに進むには、[続行] をクリックします。
- [始める] セクションで、次の操作を行います。
-
[データの保存場所の選択] セクションで、次の操作を行います。
- ロケーション タイプを選択してください。
- [Location type] プルダウン メニューから、バケットのデータが永続的に保存されるロケーションを選択します。
- ロケーション タイプとして [デュアルリージョン] を選択した場合は、関連するチェックボックスを使用して [ターボ レプリケーション] を有効にすることもできます。
- クロスバケット レプリケーションを設定するには、
[Storage Transfer Service 経由でクロスバケット レプリケーションを追加する] を選択し、
次の手順を実施します:
クロスバケット レプリケーションを設定する
- [バケット] メニューで、バケットを選択します。
[レプリケーション設定] セクションで、[構成] をクリックして、レプリケーション ジョブの設定を構成します。
[**クロスバケット レプリケーションを構成する**] ペインが表示されます。
- オブジェクト名の接頭辞で複製するオブジェクトをフィルタするには、 オブジェクトを追加または除外する接頭辞を入力し、 [接頭辞を追加] をクリックします。
- 複製されたオブジェクトのストレージ クラスを設定するには、 [Storage class] メニューからストレージ クラスを選択します。 この手順をスキップすると、複製されたオブジェクトはデフォルトで宛先バケットのストレージ クラスを使用します。
- [完了] をクリックします。
-
[データの保存場所を選択する] セクションで、次の操作を行います。
- バケットのデフォルトのストレージ クラスを選択するか、バケットデータのストレージ クラスを自動的に管理するAutoclassを選択します。
- 階層名前空間を有効にするには、 [データ量が多いワークロード向けにストレージを最適化] セクションで、 [このバケットで階層的な名前空間を有効にする] を選択します。
- In the [オブジェクトへのアクセスを制御する方法を選択する] セクションで、バケットに 公開アクセスの防止 を適用するかどうかを選択し、バケットのオブジェクトに使用する アクセス制御方法 を選択します。
-
[オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。
- [**データ保護**] で、バケットに設定するオプションを選択します。
- 削除(復元可能)を有効にするには、 [削除(復元可能)ポリシー(データ復旧用)] チェックボックスをオンにして、 削除後にオブジェクトを保持する日数を指定します。
- オブジェクトのバージョニングを設定するには、 [オブジェクトのバージョニング(バージョン管理用)] チェックボックスをオンにして、 オブジェクトごとの最大バージョン数と、非現行バージョンが期限切れになるまでの日数を指定します。
- オブジェクトとバケットで保持ポリシーを有効にするには、[保持(コンプライアンス用)] チェックボックスをオンにして、次の操作を行います。
- [オブジェクト保持ロック]を有効にするには、 [オブジェクト保持を有効にする]チェックボックスをオンにします。
- [Bucket Lock] を有効にするには、[バケット保持ポリシーを設定する] チェックボックスをオンにして、保持期間の単位と保持期間を選択します。
- オブジェクト データの暗号化方法を選択するには、 [データ暗号化] セクション()を開き、 [データの暗号化] 方法を選択します。
- [**データ保護**] で、バケットに設定するオプションを選択します。
- [作成] をクリックします。
オブジェクトのバージョニングの有効化
Terraform の構成の削除や上書きを防ぐには、バケットのオブジェクトのバージョニングを使用する必要があります。オブジェクトのバージョニングを有効にするには、オブジェクトのバージョニングの使用に関する Cloud Storage のドキュメントをご覧ください。
バケットへのアクセスを許可する
組織内のユーザーが構成をデプロイする場合、Cloud Build サービス アカウントにバケットの読み取りアクセス権が必要です。ユーザーが構成をデプロイするのと同じ Google Cloud プロジェクトにバケットが保存されている場合、 サービス アカウントにはすでにこのアクセス権があります。
ユーザーが別の Google Cloud プロジェクトで構成をデプロイする場合は、次のいずれかの 方法を使用してバケットへのアクセスを許可します。
ストレージ オブジェクト閲覧者 (
roles/storage.objectViewer)ロールをユーザーの Cloud Build サービス アカウントまたは Terraform 構成をデプロイする Google Cloud リソース(プロジェクト、フォルダまたは組織)に付与します。アクセス制御リスト(ACL)を使用して、 バケットへのアクセスを管理します。
バケットへのアクセスの管理についての詳細は、Cloud Storage のアクセス制御の概要をご覧ください。
Terraform モジュールの作成とアップロード
Cloud Storage バケットを設定したら、すべての構成ファイルのコンテナである Terraform モジュールを作成してアップロードする必要があります。サービス カタログはモジュールを使用して JSON スキーマ ファイルを自動的に生成し、構成の変数を定義します。
現在のディレクトリの外部にあるモジュールを呼び出す場合は、相対パスの代わりにリモートパスを使用します。たとえば、source = "../../" ではなく source = "GoogleCloudPlatform/cloud-run/google" を使用します。
一般的なユースケースのモジュールについては、 の Terraform ブループリントとモジュールをご覧ください。 Google Cloud Google Cloud
次のコードサンプルは、Terraform 構成ファイル main.tf を示しています。
variable "machine_type" {
type = string
default = "n1-standard-1"
}
variable "zone" {
type = string
default = "us-central1-a"
}
variable "deployment_identifier" {
description = "The unique name for your instance"
type = string
}
resource "google_compute_instance" "default" {
name = "vm-${var.deployment_identifier}"
machine_type = var.machine_type
zone = var.zone
boot_disk {
device_name = "boot"
auto_delete = true
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral IP
}
}
}
モジュールを作成したら、ファイルを ZIP ファイルに圧縮します。モジュールが ZIP ファイルのルートに保存されていることを確認します。
Terraform ファイルを圧縮するときにモジュールが適切に保存されるようにするには、次のコマンドを実行します。
none
zip solution.zip file1.tf file2.tf file3.tf
続いて、zip ファイルをバケットにアップロードします。zip ファイルをアップロードする手順については、Cloud Storage のドキュメントにある オブジェクトのアップロードをご覧ください。
サービス カタログでの構成の作成
Terraform モジュールを使用して Cloud Storage バケットを設定したら、バケットを含むサービス カタログソリューションを作成します。
Terraform 構成をサービス カタログソリューションとして作成するには:
コンソールでサービス カタログ管理者の [Solutions] ページ に移動します。 Google Cloud
[ソリューション] ページに移動プロジェクトを選択するには、[Select] をクリックします。 Google Cloud
[ソリューションを作成] をクリックします。プルダウン リストで、[Terraform 構成の作成] を選択します。
Terraform 構成の名前、説明、タグラインを入力します。タグラインとは、ユーザーがサービス カタログをブラウジングするときに表示されるソリューションの簡単な説明です。
[Terraform 構成へのリンク] に、Terraform モジュールの zip ファイルを含む Cloud Storage バケットへのリンクを指定します(
gs://my-terraform-bucket/my-zip-file.zipなど)。必要に応じて、ソリューションのアイコンをアップロードします。アイコンの推奨サイズは 80×80 ピクセルです。
必要に応じて、サポートリンクとクリエイターの連絡先情報を入力します。
必要に応じて、ソリューションのドキュメントへのリンクを追加します。
ソリューションのデプロイに使用する Terraform のバージョンを選択します。
必要に応じて、[独自のサービス アカウントを選択または入力する] の横にあるチェックボックスをオンにして、独自のサービス アカウントを指定できます。サービス アカウントがソリューションを作成するプロジェクトと同じプロジェクトにある場合は、[現在のプロジェクトからサービス アカウントを選択する] を選択し、プルダウン メニューからサービス アカウントを選択します。 Google Cloud サービス アカウントがソリューションとは異なるプロジェクトにある場合は、 [プロジェクトのサービス アカウントのメールアドレスを入力する] を選択し、 サービス アカウントのメールアドレスを入力します。 Google Cloud
[作成] をクリックします。
ソリューションが作成され、サービス カタログ管理者の [ソリューション] ページに表示されます。
次のスクリーンショットは、Terraform 設定の作成方法を示しています。
次のステップ
- Terraform 構成をカタログに割り当てて、組織内のユーザーがソリューションにアクセスしてデプロイできるようにする。
- 最新の Terraform 構成の詳細でソリューションを更新する。