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
파일을 사용하여 내보낼 리소스 유형 지정
tf-output
디렉터리를 만듭니다.cd && mkdir tf-output && cd tf-output
types.txt
라는 파일을 만들고 리소스 유형 목록을 추가합니다. 예를 들면 다음과 같습니다.ComputeBackendBucket ComputeBackendService ComputeForwardingRule
--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
프로젝트에 특정 리소스 유형이 없으면 명령어는 성공하지만 아무 리소스 유형도 출력되지 않습니다.