콘솔에서 다운로드한 Terraform을 사용하여 기반 배포

Google Cloud 콘솔의 Cloud 기초 설정 가이드를 통해 기업 관리자는 안내식 인터페이스를 사용해서 기업용 Google Cloud 기반을 구성하고 Google Cloud 콘솔에서 직접 배포하거나 Terraform으로 다운로드할 수 있습니다.

관리자는 조직 항목, 사용자 및 그룹을 구성하고, 결제 계정을 연결 또는 설정하고, 리소스(폴더 및 프로젝트) 계층 구조를 구성하고, IAM 정책, 초기 네트워킹, 중앙 집중식 로깅 및 모니터링을 구성할 수 있습니다.

고객이 자신의 구성을 Terraform으로 다운로드할 때 콘솔은 나중에 배포할 수 있도록 Terraform 파일을 생성합니다. 이 튜토리얼에서는 다운로드한 Terraform 파일을 배포하기 위한 안내를 제공하고 이전에 배포된 인프라 리소스를 고려합니다.

시작하기 전에

Terraform 사용을 위한 권장사항을 검토합니다. 여기에는 팀 구성원 및 작업 흐름 간에 Terraform을 사용한 효과적인 개발 가이드라인이 포함됩니다.

콘솔에서 배포 버튼을 클릭하여 기초 구성을 이미 배포했고 이제 자체 파이프라인을 사용해서 다운로드한 Terraform 구성을 배포하려면 다음을 수행해야 합니다.

  • 콘솔에서 생성된 Terraform 상태 파일을 다운로드합니다.
  • 자체 파이프라인 프로세스에 다운로드한 상태 파일을 포함합니다.

자세한 내용은 콘솔에서 배포 후 다운로드한 Terraform 배포를 참조하세요.

Cloud Shell을 사용하여 Terraform 배포

Cloud Shell에는 Terraform이 사전 설치되고 사전 인증되어 있으므로 빠르게 시작할 수 있습니다.

  1. 콘솔 내 설정 가이드에서 Terraform으로 다운로드를 클릭하고 구성을 저장합니다.
  2. Cloud Shell을 엽니다.
  3. Cloud Shell에서 디렉터리를 만들어 해당 디렉터리로 이동합니다.

    mkdir cloud-foundation-example && cd cloud-foundation-example
    
  4. 1단계에서 다운로드한 Terraform 구성을 업로드합니다.

    Cloud Shell의 더보기 메뉴에서 업로드를 선택한 후 파일 선택을 클릭하여 Terraform 구성을 선택합니다. 대상 디렉터리를 이전 단계에서 만든 폴더로 설정한 후 업로드를 클릭합니다.

  5. 현재 위치가 cloud-foundation-example 디렉터리인지 확인합니다.

  6. Terraform 원격 상태를 저장할 Cloud Storage 버킷을 만듭니다. 원격 상태를 사용하면 Terraform에서 Cloud Storage와 같은 객체 저장소를 사용하여 Terraform 관리형 인프라에 대한 상태 정보를 저장할 수 있습니다. 이 구성은 팀 위임 및 상태 잠금과 같은 이점을 제공합니다.

    Cloud Storage 버킷을 만들려면 다음 명령어를 실행합니다.

    gcloud storage buckets create gs://tf-state-PROJECT_ID
    
  7. backend.tf 파일 내에 Terraform 백엔드 구성을 정의하고 PROJECT_ID를 이전 단계에서 사용한 프로젝트 ID와 일치하도록 바꿉니다. 자세한 내용은 Cloud Storage에 Terraform 상태 저장을 참조하세요.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. terraform init를 실행합니다. 이 프로세스는 Terraform 구성 파일과 백엔드가 포함된 작업 디렉터리를 초기화합니다.

  9. terraform plan을 실행하여 Terraform에서 만드는 리소스를 확인합니다. 출력 예시:

    ...
    Plan: 6 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Google Cloud에 리소스를 배포하는 terraform apply를 실행하여 구성을 적용합니다. 메시지가 표시되면 yes를 입력합니다.

  11. Google Cloud 콘솔 살펴보기로 리소스가 계정 또는 프로젝트에 배포되었는지 확인합니다.

Cloud Shell을 사용하여 Terraform 다시 배포

Terraform은 배포된 리소스에 대한 정보를 Terraform 상태 파일에 저장합니다. 이전 단계에 따라 구성을 배포한 경우 동일한 백엔드를 재사용하여 내보낸 새 구성에서 정의한 리소스를 자동으로 감지, 프루닝, 업데이트하는 것이 좋습니다.

  1. 콘솔 내 설정 가이드에서 Terraform으로 다운로드를 클릭하고 구성을 저장합니다.
  2. Cloud Shell을 엽니다.
  3. Cloud Shell에서 새 디렉터리를 만들어 해당 디렉터리로 이동합니다.
    mkdir cloud-foundation-example-redeploy && cd cloud-foundation-example-redeploy
    
  4. 1단계에서 다운로드한 Terraform 구성을 업로드합니다.

    Cloud Shell의 더보기 메뉴에서 업로드를 선택한 후 파일 선택을 클릭하여 Terraform 구성을 선택합니다. 대상 디렉터리를 이전 단계에서 만든 폴더로 설정한 후 업로드를 클릭합니다.

  5. 현재 위치가 cloud-foundation-example-redeploy 디렉터리인지 확인합니다.

  6. 이전에 만든 Cloud Storage 백엔드 버킷과 상태 파일이 있는지 확인합니다.

    gcloud storage ls gs://tf-state-PROJECT_ID/terraform/state/
    
    출력 예시:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. 동일한 버킷과 프리픽스를 재사용하여 backend.tf 파일 내에 Terraform 백엔드 구성을 정의합니다.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. terraform init를 실행합니다. 이 프로세스는 Terraform 구성 파일과 백엔드가 포함된 작업 디렉터리를 초기화합니다.

  9. terraform plan을 실행하여 Terraform에서 생성, 변경 또는 폐기하는 리소스를 확인합니다. 출력 예시:

    ...
    Plan: 2 to add, 3 to change, 4 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Google Cloud에 리소스를 배포하는 terraform apply를 실행하여 구성을 적용합니다. 메시지가 표시되면 yes를 입력합니다.

  11. Google Cloud 콘솔 살펴보기로 리소스가 계정 또는 프로젝트에 배포되었는지 확인합니다.

콘솔에서 배포 후 다운로드한 Terraform 배포

콘솔에서 배포 버튼을 사용하여 기초 구성을 이미 배포했으면 Terraform 상태 파일이 생성되어 있습니다. 이제 자체 파이프라인을 사용해서 Terraform 구성을 다운로드하려면 콘솔 배포 중에 생성된 Terraform 상태 파일을 포함해야 합니다.

상태 파일을 다운로드하고 사용하려면 다음 안내를 따르세요.

  1. Terraform 상태 파일을 다운로드하려면 Terraform 상태 파일 관리에서 다음 절차를 완료합니다.

    1. 배포 잠금
    2. 상태 파일 다운로드
    3. 배포 잠금 해제
  2. 다운로드한 상태 파일을 Cloud Storage 버킷으로 이동하려면 Cloud Storage 버킷에 Terraform 상태 저장을 참조하세요.

  3. Terraform 구성을 다시 배포하려면 Cloud Shell로 Terraform 다시 배포를 참조하세요.

Terraform 배포 문제 해결

기존 리소스로 Terraform 배포

다운로드한 Terraform 구성이 이미 존재하는 리소스를 만들려고 시도하면 Terraform이 409 오류 코드로 종료됩니다. 이러한 오류를 해결하려면 Google Cloud 콘솔 또는 gcloud CLI를 사용하여 리소스를 삭제한 다음 Terraform 구성을 다시 적용할 수 있습니다. 또는 이러한 리소스가 중요하여 삭제할 수 없는 경우 Terraform 상태로 리소스를 가져올 수 있습니다.

Terraform, Cloud Build, GitOps를 사용하여 인프라를 코드로 관리

자세한 안내는 이 튜토리얼을 참조하세요. 이 옵션은 예측 가능하고 반복적으로 인프라를 변경할 전략을 찾고 있는 플랫폼 관리자 및 운영자를 위한 옵션입니다. 이 가이드에서는 개발자가 Google Cloud, Linux, GitHub에 익숙하다고 가정합니다. 위 옵션에서 설명하는 단계는 간략히 다음과 같습니다.

  1. GitHub 저장소를 설정합니다.
  2. Cloud Storage 버킷에 상태를 저장하도록 Terraform을 구성합니다.
  3. Cloud Build 서비스 계정에 권한을 부여합니다.
  4. Cloud Build를 GitHub 저장소에 연결합니다.
  5. 기능 분기에서 환경 구성을 변경합니다.
  6. 변경사항을 개발 환경으로 승격합니다.
  7. 변경사항을 프로덕션 환경으로 승격합니다.