Terraform 構成の作成

組織向けにサービス カタログ ソリューションをキュレートする場合、Terraform 構成(構成)を作成できます。ユーザーは、これを Terraform を使用してデプロイします。構成を作成したら、カタログに割り当てることでユーザーと共有できます。

このガイドでは、Cloud Build を使用して Terraform Docker イメージの最新バージョンで Terraform コマンドを実行し、Cloud Storage を使用してモジュールや状態ファイルなどの Terraform リソースを保存して管理します。

Terraform の使用に関するリソースとガイドについては、Google Cloud で Terraform を使用するをご覧ください。

始める前に

  • 次の Identity and Access Management(IAM)ロールを付与されている必要があります。

    • サービス カタログが有効になっている Google Cloud プロジェクトのカタログ管理者roles/cloudprivatecatalogproducer.admin)、またはカタログ マネージャーroles/cloudprivatecatalogproducer.manager)。
    • サービス カタログが有効になっているプロジェクトの Storage 管理者roles/storage.admin)。
    • ソリューションを作成するプロジェクトの Cloud Build 編集者roles/cloudbuild.builds.editor)。

      これらのロールを付与されていない場合は、組織の管理者に連絡してアクセス権をリクエストしてください。

  • 構成を再作成するプロジェクトで次の Cloud Build を設定します。

    1. Enable the Cloud Build API.

      Enable the API

      APIを有効にすると、次のステップで使用する Cloud Build サービスのアカウントが自動的に作成されます。

    2. 次の IAM ロールをサービス アカウントに付与します。

      ロールを付与する手順については、Cloud Build サービス アカウントのアクセス権の構成をご覧ください。

Cloud Storage への構成ファイルのアップロード

サービス カタログの Terraform 構成ファイルは、Cloud Storage を使用して管理します。

Cloud Storage バケットを作成する

Cloud Storage を設定するには、組織に対してサービス カタログを有効にしたのと同じプロジェクト内でバケットを作成します。

  1. In the Google Cloud console, go to the Cloud Storage Buckets page.

    Go to Buckets page

  2. Click Create bucket.
  3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
    • For Name your bucket, enter a name that meets the bucket naming requirements.
    • For Choose where to store your data, do the following:
      • Select a Location type option.
      • Select a Location option.
    • For Choose a default storage class for your data, select a storage class.
    • For Choose how to control access to objects, select an Access control option.
    • For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
  4. Click Create.

オブジェクトのバージョニングの有効化

Terraform の構成の削除や上書きを防ぐには、バケットのオブジェクトのバージョニングを使用する必要があります。オブジェクトのバージョニングを有効にするには、オブジェクトのバージョニングの使用に関する Cloud Storage のドキュメントをご覧ください。

バケットへのアクセスを許可する

組織内のユーザーが構成をデプロイする場合、Cloud Build サービス アカウントにバケットの読み取りアクセス権が必要です。ユーザーが構成をデプロイするのと同じ Cloud プロジェクトにバケットが保存されている場合、サービス アカウントにはすでにこのアクセス権があります。

ユーザーが別の Cloud プロジェクトで構成をデプロイする場合は、次のいずれかの方法を使用してバケットへのアクセスを許可します。

  • ストレージ オブジェクト閲覧者roles/storage.objectViewer)ロールをユーザーの Cloud Build サービス アカウントまたは Terraform 構成をデプロイする Google Cloud リソース(プロジェクト、フォルダまたは組織)に付与します。

  • アクセス制御リスト(ACL)を使用して、バケットへのアクセスを管理します。

バケットへのアクセスの管理についての詳細は、Cloud Storage のアクセス制御の概要をご覧ください。

Terraform モジュールの作成とアップロード

Cloud Storage バケットを設定したら、すべての構成ファイルのコンテナである Terraform モジュールを作成してアップロードする必要があります。サービス カタログはモジュールを使用して JSON スキーマ ファイルを自動的に生成し、構成の変数を定義します。

現在のディレクトリの外部にあるモジュールを呼び出す場合は、相対パスの代わりにリモートパスを使用します。たとえば、source = "../../" ではなく source = "GoogleCloudPlatform/cloud-run/google" を使用します。

Google Cloud の一般的なユースケースのモジュールについては、Cloud Foundation Toolkit をご覧ください。

次のコードサンプルは、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 ファイルのルートに保存されていることを確認します(サブディレクトリを使用しないでください)。

続いて、zip ファイルをバケットにアップロードします。zip ファイルをアップロードする手順については、Cloud Storage のドキュメントにある オブジェクトのアップロードをご覧ください。

サービス カタログでの構成の作成

Terraform モジュールを使用して Cloud Storage バケットを設定したら、バケットを含むサービス カタログソリューションを作成します。

Terraform 構成をサービス カタログソリューションとして作成するには:

  1. Cloud Console でサービス カタログ管理者の [ソリューション] ページに移動します。
    [ソリューション] ページに移動

  2. [選択] をクリックして、Google Cloud プロジェクトを選択します。

  3. [ソリューションを作成] をクリックします。プルダウン リストで、[Terraform 構成の作成] を選択します。

  4. Terraform 構成の名前、説明、タグラインを入力します。タグラインとは、ユーザーがサービス カタログをブラウジングするときに表示されるソリューションの簡単な説明です。

  5. [Terraform 構成へのリンク] に、Terraform モジュールの zip ファイルを含む Cloud Storage バケットへのリンクを指定します(gs://my-terraform-bucket/my-zip-file.zip など)。

  6. 必要に応じて、ソリューションのアイコンをアップロードします。アイコンの推奨サイズは 80×80 ピクセルです。

  7. 必要に応じて、サポートリンクとクリエイターの連絡先情報を入力します。

  8. 必要に応じて、ソリューションのドキュメントへのリンクを追加します。

  9. ソリューションのデプロイに使用する Terraform のバージョンを選択します。

  10. [作成] をクリックします。

ソリューションが作成され、サービス カタログ管理者の [ソリューション] ページに表示されます。

次のスクリーンショットは、Terraform 設定の作成方法を示しています。

Terraform 設定を作成する

次のステップ