Terraform 상태 파일 관리

배포의 경우 상태 파일을 검사하거나 수정할 수 있습니다. 예를 들어 배포에서 리소스를 가져오거나 삭제하려면 상태 파일을 수정하면 됩니다.

이 페이지에서는 각 배포 및 버전에 대해 생성되는 Terraform 상태 파일을 사용하는 방법을 설명합니다. 상태 파일에 관한 자세한 내용은 상태를 참고하세요.

이 페이지의 안내는 사용자가 Terraform에 익숙하다고 가정합니다.

시작하기 전에

  1. 상태 파일을 사용하는 데 필요한 권한이 있는지 확인합니다. config.admin 역할에는 필요한 권한이 포함됩니다. 필요한 구체적인 권한은 다음과 같습니다.

    • config.deployments.lock
    • config.revisions.getState
    • config.deployments.updateState
    • config.deployments.unlock
    • config.deployments.getLock
    • config.deployments.getState
  2. Terraform 구성의 로컬 사본이 있는지 확인합니다. 이는 작업 중인 상태 파일에 해당하는 구성입니다.

    구성의 로컬 사본을 사용하면 상태 파일을 수정하는 동안 terraform refresh 또는 terraform plan와 같은 명령어를 로컬에서 실행할 수 있습니다.

  3. 로컬 머신에서 Terraform CLI를 사용하려면 Terraform을 설치하세요.

상태 파일 변경 또는 검사

상태 파일을 변경 (수정)하거나 검사하려면 배포를 잠그고 상태 파일을 다운로드해야 합니다. 그런 다음 상태 파일을 변경하거나 검사할 수 있습니다.

상태 파일을 변경한 후에는 Infra Manager가 배포에 사용할 파일을 업로드합니다.

배포 잠금

  1. 상태 파일을 변경하는 동안 배포가 변경되지 않도록 배포를 잠급니다. 상태 파일을 다운로드하려면 배포가 잠겨 있어야 합니다.

     gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
    

    다음과 같이 바꿉니다.

    • DEPLOYMENT_ID를 배포 식별자로 바꿉니다.
    • PROJECT_ID를 배포가 실행되는 프로젝트로 바꿉니다.
    • LOCATION을 배포가 실행되는 위치로 바꿉니다.

    이 명령어의 출력에는 상태 파일을 업로드하고 잠금 해제하는 데 사용되는 lock ID가 포함됩니다.

  2. 언제든지 도어락 ID를 검색하려면 다음 명령어를 사용하세요.

     gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
    

상태 파일 다운로드

상태 파일을 다운로드하려면 서명된 Cloud Storage URL을 사용합니다.

   SIGNED_STATE_DOWNLOAD_URL=$(gcloud infra-manager deployments export-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(signedUri)")

   curl -s -X GET --output terraform.tfstate ${SIGNED_STATE_DOWNLOAD_URL}

로컬에서 상태 파일 변경

  1. 구성 (*.tf 파일)이 다운로드한 상태 파일 (terraform.tfstate)과 동일한 디렉터리에 있는지 확인합니다.

  2. Terraform을 초기화합니다.

     terraform init
    
  3. 이전에 Terraform을 초기화한 경우 재구성 플래그를 사용하여 초기화해야 할 수 있습니다.

     terraform init -reconfigure
    
  4. 필요에 따라 상태 파일을 사용합니다. 예를 들어 상태 검사 또는 변형 작업을 실행할 수 있습니다. 상태 파일 작업에 관한 자세한 내용은 Terraform 상태 조작을 참고하세요.

  5. 로컬에서 Terraform 구성 파일을 변경한 경우 수정된 구성을 업로드합니다. 이 구성을 구성을 배포하는 소스로 사용 중인 스토리지 버킷 또는 공개 git 저장소에 업로드합니다.

상태 파일 업로드

서명된 Cloud Storage URL을 사용하여 상태 파일을 업로드합니다.

  1. 도어락 ID를 가져옵니다.

     LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. 업로드 URL을 가져옵니다.

     SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID} --format="get(signedUri)")
    
     curl -s -X PUT --upload-file terraform.tfstate $SIGNED_STATE_UPLOAD_URL
    

배포 잠금 해제

  1. 도어락 ID를 가져옵니다.

     LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. 배포 잠금 해제:

     gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
    

다음 단계