Terraform 구성 만들기

조직의 서비스 카탈로그 솔루션을 선별할 때 사용자가 Terraform을 사용하여 배포하는 Terraform 구성 또는 구성(config)을 만들 수 있습니다. 구성을 만든 후 카탈로그에 할당하여 사용자와 공유할 수 있습니다.

이 가이드에서는 Cloud Build를 사용하여 최신 버전의 Terraform Docker 이미지에서 Terraform 명령어를 실행하고 Cloud Storage를 사용하여 모듈 및 상태 파일과 같은 Terraform 리소스를 저장하고 관리합니다.

Terraform 사용에 대한 리소스와 안내는 Google Cloud에서 Terraform 사용을 참조하세요.

시작하기 전에

구성 파일을 Cloud Storage에 업로드

Cloud Storage를 사용하여 서비스 카탈로그의 Terraform 구성 파일을 관리합니다.

Cloud Storage 버킷 만들기

Cloud Storage를 설정하려면 조직에 서비스 카탈로그를 사용 설정한 동일한 프로젝트에 버킷을 만듭니다.

  1. Google Cloud Console에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷 페이지로 이동

  2. 버킷 만들기를 클릭합니다.
  3. 버킷 만들기 페이지에서 버킷 정보를 입력합니다. 다음 단계로 이동하려면 계속을 클릭합니다.
    • 버킷 이름 지정에서 버킷 이름 지정 요구사항을 충족하는 이름을 입력합니다.
    • 데이터를 저장할 위치 선택에서 다음을 수행합니다.
      • 위치 유형 옵션을 선택합니다.
      • 위치 옵션을 선택합니다.
    • 데이터의 기본 스토리지 클래스 선택에서 스토리지 클래스를 선택합니다.
    • 객체 액세스를 제어하는 방식 선택에서 액세스 제어 옵션을 선택합니다.
    • 고급 설정(선택사항)에서 암호화 방법, 보관 정책 또는 버킷 라벨을 지정합니다.
  4. 만들기를 클릭합니다.

객체 버전 관리 사용 설정

Terraform 구성을 삭제하거나 덮어쓰지 않으려면 버킷에 객체 버전 관리를 사용해야 합니다. 객체 버전 관리를 사용 설정하려면 객체 버전 관리 사용에 대한 Cloud Storage 문서를 참조하세요.

버킷에 대한 액세스 권한 부여

조직의 사용자가 구성을 배포할 때 Cloud Build 서비스 계정에는 버킷에 대한 읽기 액세스 권한이 있어야 합니다. 사용자가 구성을 배포하는 동일한 Cloud 프로젝트에 버킷이 저장된 경우 서비스 계정에 이미 이 액세스 권한이 있는 것입니다.

사용자가 다른 Cloud 프로젝트에 구성을 배포하는 경우 다음 방법 중 하나를 사용하여 버킷에 대한 액세스 권한을 부여합니다.

  • 사용자의 Cloud Build 서비스 계정 또는 사용자가 프로젝트, 폴더, 조직과 같은 Terraform 구성을 배포하는 Google Cloud 리소스에 스토리지 객체 뷰어(roles/storage.objectViewer) 역할을 부여합니다.

  • 액세스 제어 목록(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 구성 링크 필드에 gs://my-terraform-bucket/my-zip-file.zip와 같은 Terraform 모듈의 ZIP 파일이 포함된 Cloud Storage 버킷의 링크를 입력합니다.

  6. 원하는 경우 솔루션 아이콘을 업로드합니다. 아이콘의 권장 크기는 80x80픽셀입니다.

  7. 원하는 경우 작성자의 지원 링크와 연락처 정보를 입력합니다.

  8. 원하는 경우 솔루션 문서 링크를 추가합니다.

  9. 솔루션을 배포하는 데 사용할 Terraform 버전을 선택합니다.

  10. 만들기를 클릭합니다.

솔루션이 생성되고 서비스 카탈로그 관리자 솔루션 페이지에 나타납니다.

다음 스크린샷은 Terraform 구성을 만드는 방법을 보여줍니다.

Terraform 구성 만들기

다음 단계