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를 입력하여 작업 적용을 확인합니다.