Terraform との統合

Terraform を使用してインフラストラクチャを管理する場合、Google Cloud プロバイダのベータ版を使用して、Terraform 構成で以下のリソースを定義できます。

Terraform モジュールでリポジトリとリポジトリに固有の権限を定義します。

  1. google プロバイダとリポジトリ リソースを使用して、main.tf モジュール ファイルを作成します。

    次の構成では、プロバイダと、Terraform リソース名が my-repo のリポジトリを定義します。

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_artifact_registry_repository" "my-repo" {
      provider = google-beta
    
      location = "LOCATION"
      repository_id = "REPOSITORY"
      description = "DESCRIPTION"
      format = "DOCKER"
      kms_key_name = "KEY"
    }
    

    ここで

    • PROJECT-ID は、Google Cloud プロジェクト ID です。
    • REPOSITORY はリポジトリ名です
    • LOCATION はリポジトリのロケーションです
    • DESCRIPTION はリポジトリの説明です(省略可能)
    • KEY は、暗号化に顧客管理の暗号鍵(CMEK)を使用する場合の Cloud Key Management Service の鍵の名前です。デフォルト設定の Google が管理する暗号鍵を使用する場合は、この引数を省略します。
  2. モジュールにリポジトリに固有の権限を付与するには、google_artifact_registry_repository_iam リソースを追加します。次の例では、リソース名が repo-account のサービス アカウントを定義し、リソース名が my-repo のリポジトリへの読み取りアクセス権を付与します。

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_artifact_registry_repository" "my-repo"     {
      provider = google-beta
    
      location = "LOCATION"
      repository_id = "REPOSITORY"
      description = "DESCRIPTION"
      format = "DOCKER"
    }
    
    resource "google_service_account" "repo-account" {
      provider = google-beta
    
      account_id   = "ACCOUNT-ID"
      display_name = "Repository Service Account"
    }
    
    resource "google_artifact_registry_repository_iam_member" "repo-iam" {
      provider = google-beta
    
      location = google_artifact_registry_repository.my-repo.location
      repository = google_artifact_registry_repository.my-repo.name
      role   = "roles/artifactregistry.reader"
      member = "serviceAccount:${google_service_account.repo-account.email}"
    }
    

    ACCOUNT-ID はサービス アカウントの ID です。これは、サービス アカウントのメール フィールドの @ 記号の前の部分です。

    IAM ポリシーで権限を割り当てるなど、その他の例については、google_artifact_registry_repository_iam のドキュメントをご覧ください。

  3. Terraform を初期化します。

    terraform init
    
  4. Terraform 構成を適用します。

    terraform apply
    

    yes と入力して、アクションを適用します。