Terraform 構成の作成

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

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

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

始める前に

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

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

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

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

    1. Cloud Build API を有効にします。

      API を有効にする

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

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

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

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

Private Catalog の Terraform 構成ファイルは、Cloud Storage を使用して管理します。

Cloud Storage バケットを作成する

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

  1. Cloud Console で、Cloud Storage ブラウザページに移動します。

    [ブラウザ] に移動

  2. [バケットを作成] をクリックします。
  3. [バケットの作成] ページでユーザーのバケット情報を入力します。次のステップに進むには、[続行] をクリックします。
    • [バケットに名前を付ける] で、バケット名の要件を満たす名前を入力します。
    • [データの保存場所の選択] で、次の操作を行います。
      • [ロケーション タイプ] オプションを選択します。
      • [ロケーション] オプションを選択します。
    • [データのデフォルトのストレージ クラスを選択する] で、ストレージ クラスを選択します。
    • [オブジェクトへのアクセスを制御する方法を選択する] で [アクセス制御] オプションを選択します。
    • [詳細設定(省略可)] には、暗号化メソッド保持ポリシー、またはバケットラベルを指定します。
  4. [作成] をクリックします。

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

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

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

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

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

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

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

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

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

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

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-9"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral IP
    }
  }
}

モジュールを作成したら、ファイルを zip ファイルに圧縮します。モジュールが zip ファイルのルートに保存されていることを確認します(サブディレクトリを使用しないでください)。

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

Private Catalog で構成を作成する

Terraform モジュールを使用して Cloud Storage バケットを設定したら、バケットを含む Private Catalog ソリューションを作成します。

Terraform 構成を Private Catalog ソリューションとして作成するには:

  1. Cloud Console で Private Catalog 管理者の [ソリューション] ページに移動します。
    [ソリューション] ページに移動

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

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

  4. Terraform 構成の名前、説明、タグラインを入力します。タグラインとは、ユーザーが Private Catalog を閲覧中に表示されるソリューションの簡単な説明です。

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

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

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

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

  9. [CREATE] をクリックします。

ソリューションが作成され、Private Catalog 管理者の [ソリューション] ページに表示されます。

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

Terraform 設定を作成する

次のステップ