Terraform 형식으로 Google Cloud 리소스 내보내기

Google Cloud에 리소스를 배포했으므로 이제 Terraform으로 코드형 인프라(IaC)를 관리해야 합니다. Google은 프로젝트, 폴더 또는 조직의 리소스에 대해 Terraform 코드를 생성하는 데 사용할 수 있는 도구를 제공합니다.

시작하기 전에

구성 커넥터에 명령줄 인터페이스(CLI)를 설치합니다.

gcloud components install config-connector

Config Connector를 사용하면 Google Cloud의 Terraform 일괄 내보내기 도구를 사용할 수 있습니다.

Terraform HCL 코드로 전체 프로젝트 구성 내보내기

gcloud beta resource-config bulk-export --resource-format=terraform 명령어는 현재 프로젝트, 폴더 또는 조직에 구성된 리소스를 내보내고 HCL 코드 형식으로 화면에 출력합니다.

gcloud beta resource-config bulk-export \
  --project=PROJECT_ID \
  --resource-format=terraform

디렉터리 구조에 출력 쓰기

프로젝트의 전체 구성을 다음 경로로 출력합니다.

gcloud beta resource-config bulk-export \
  --path=OUTPUT_DIRECTORY_NAME \
  --project=PROJECT_ID \
  --resource-format=terraform

--path 플래그는 HCL 코드를 출력할 위치를 지정합니다. OUTPUT_DIRECTORY_NAME 경로가 존재하지 않으면 경로를 만들라는 메시지가 표시됩니다.

명령어를 실행하면 각 리소스의 HCL 코드가 다음 디렉터리 구조의 별도 .tf 파일로 출력됩니다.

OUTPUT_DIRECTORY_NAME/projects/PROJECT_ID/RESOURCE_TYPE

단일 파일에 출력 쓰기

출력을 화면에 출력하거나 별도의 .tf 파일을 만들지 않으려면 다음 예시와 같이 모든 출력을 단일 파일로 씁니다.

gcloud beta resource-config bulk-export --resource-format=terraform >> gcp_resources.tf

출력 필터링

리소스 유형을 지정하여 일괄 내보내기 명령어의 출력을 필터링합니다.

필터링할 지원되는 리소스 유형 나열

지원되는 리소스 유형 목록을 보려면 gcloud beta resource-config list-resource-types 명령어를 실행합니다.

gcloud beta resource-config list-resource-types

원하는 경우, 파일에 출력을 작성합니다.

gcloud beta resource-config list-resource-types >> strings.txt

출력에서 Compute Engine VM의 리소스 유형은 다음과 같이 나열됩니다.

KRM KIND: ComputeInstance

KRM KIND: 프리픽스는 무시해도 됩니다.

단일 리소스 유형 내보내기

이전 명령어에 표시된 ComputeInstance 문자열을 사용하여 프로젝트의 Compute Engine VM 인스턴스만 HCL 코드 형식으로 내보냅니다.

gcloud beta resource-config bulk-export \
  --resource-types=ComputeInstance \
  --project=PROJECT_ID \
  --resource-format=terraform

--resource-types 플래그는 출력할 리소스 유형을 지정합니다.

여러 리소스 유형 내보내기

VM 인스턴스 및 방화벽 규칙을 HCL 코드 형식으로 내보냅니다.

gcloud beta resource-config bulk-export \
  --resource-types=ComputeFirewall,ComputeInstance \
  --project=PROJECT_ID \
  --resource-format=terraform

파일을 사용하여 내보낼 리소스 유형 지정

  1. tf-output 디렉터리를 만듭니다.

    cd && mkdir tf-output && cd tf-output
    
  2. types.txt라는 파일을 만들고 리소스 유형 목록을 추가합니다. 예를 들면 다음과 같습니다.

    ComputeBackendBucket
    ComputeBackendService
    ComputeForwardingRule
    
  3. --resource-types-file 플래그와 함께 gcloud beta resource-config bulk-export 명령어를 실행합니다.

    gcloud beta resource-config bulk-export \
     --resource-types-file=types.txt \
     --path=tf-output \
     --project=PROJECT_ID \
     --resource-format=terraform
    

프로젝트에 특정 리소스 유형이 없으면 명령어는 성공하지만 아무 리소스 유형도 출력되지 않습니다.

다음 단계