배포의 경우 상태 파일을 검사하거나 수정할 수 있습니다. 예를 들어 배포에서 리소스를 가져오거나 삭제하려면 상태 파일을 수정하면 됩니다.
이 페이지에서는 각 배포 및 버전에 대해 생성되는 Terraform 상태 파일을 사용하는 방법을 설명합니다. 상태 파일에 관한 자세한 내용은 상태를 참고하세요.
이 페이지의 안내는 사용자가 Terraform에 익숙하다고 가정합니다.
시작하기 전에
상태 파일을 사용하는 데 필요한 권한이 있는지 확인합니다.
config.admin역할에는 필요한 권한이 포함됩니다. 필요한 구체적인 권한은 다음과 같습니다.config.deployments.lockconfig.revisions.getStateconfig.deployments.updateStateconfig.deployments.unlockconfig.deployments.getLockconfig.deployments.getState
Terraform 구성의 로컬 사본이 있는지 확인합니다. 이는 작업 중인 상태 파일에 해당하는 구성입니다.
구성의 로컬 사본을 사용하면 상태 파일을 수정하는 동안
terraform refresh또는terraform plan와 같은 명령어를 로컬에서 실행할 수 있습니다.로컬 머신에서 Terraform CLI를 사용하려면 Terraform을 설치하세요.
상태 파일 변경 또는 검사
상태 파일을 변경 (수정)하거나 검사하려면 배포를 잠그고 상태 파일을 다운로드해야 합니다. 그런 다음 상태 파일을 변경하거나 검사할 수 있습니다.
상태 파일을 변경한 후에는 Infra Manager가 배포에 사용할 파일을 업로드합니다.
배포 잠금
상태 파일을 변경하는 동안 배포가 변경되지 않도록 배포를 잠급니다. 상태 파일을 다운로드하려면 배포가 잠겨 있어야 합니다.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION다음과 같이 바꿉니다.
- DEPLOYMENT_ID를 배포 식별자로 바꿉니다.
- PROJECT_ID를 배포가 실행되는 프로젝트로 바꿉니다.
- LOCATION을 배포가 실행되는 위치로 바꿉니다.
이 명령어의 출력에는 상태 파일을 업로드하고 잠금 해제하는 데 사용되는
lock ID가 포함됩니다.언제든지 도어락 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}
로컬에서 상태 파일 변경
구성 (
*.tf파일)이 다운로드한 상태 파일 (terraform.tfstate)과 동일한 디렉터리에 있는지 확인합니다.Terraform을 초기화합니다.
terraform init이전에 Terraform을 초기화한 경우 재구성 플래그를 사용하여 초기화해야 할 수 있습니다.
terraform init -reconfigure필요에 따라 상태 파일을 사용합니다. 예를 들어 상태 검사 또는 변형 작업을 실행할 수 있습니다. 상태 파일 작업에 관한 자세한 내용은 Terraform 상태 조작을 참고하세요.
로컬에서 Terraform 구성 파일을 변경한 경우 수정된 구성을 업로드합니다. 이 구성을 구성을 배포하는 소스로 사용 중인 스토리지 버킷 또는 공개 git 저장소에 업로드합니다.
상태 파일 업로드
서명된 Cloud Storage URL을 사용하여 상태 파일을 업로드합니다.
도어락 ID를 가져옵니다.
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")업로드 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
배포 잠금 해제
도어락 ID를 가져옵니다.
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")배포 잠금 해제:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
다음 단계
- Google Cloud에서 Terraform에 대해 자세히 알아보세요.
- 배포를 업데이트합니다.
- 배포 상태 보기
- 배포된 리소스 보기
- 배포를 삭제합니다.