terraform state push 커맨드

terraform state push 커맨드

terraform state push 커맨드는 로컬 상태 파일을 원격 상태 또는 로컬 상태에 업로드해요. 원격 상태를 수동으로 수정해야 할 때만 이 커맨드를 사용하는 것을 권장해요.

출처: 문서

본문

사용법 (Usage)

사용법: terraform state push [options] PATH

이 커맨드는 PATH로 지정된 상태를 현재 구성된 백엔드로 푸시해요.

PATH가 "-"이면 푸시할 상태 데이터를 stdin에서 읽어요. 이 데이터는 목적지 상태에 기록되기 전에 메모리에 완전히 로드되고 검증돼요.

참고: Terraform 상태 파일은 바이트 오더 마크(BOM) 없는 UTF-8 형식이어야 해요. Windows의 PowerShell에서는 Set-Content를 사용해서 파일을 자동으로 UTF-8로 인코딩하세요. 예를 들어 terraform state push | Set-Content terraform.tfstate처럼 실행해요.

Terraform은 안전하지 않아 보이는 변경을 막기 위해 여러 안전 검사를 수행해요:

  • 다른 계보(lineage): 상태의 "lineage" 값이 다르면 Terraform은 상태를 푸시하지 못하게 해요. 계보가 다르다는 것은 두 상태가 완전히 다르고 데이터를 잃을 수 있음을 의미해요.

  • 더 높은 원격 serial: 목적지 상태의 "serial" 값이 푸시하려는 상태보다 높으면 Terraform은 푸시를 막아요. serial이 더 높다는 것은 푸시하는 로컬 상태에 반영되지 않은 데이터가 목적지 상태에 있다는 뜻이에요.

이 두 안전 검사는 -force 플래그로 비활성화할 수 있어요. 하지만 권장하지 않아요. 안전 검사를 비활성화하고 상태를 푸시하면 목적지 상태가 덮어써져요.

이 커맨드는 다음 옵션도 받아요:

  • -force - 다른 계보와 더 높은 원격 serial에 대한 안전 검사를 비활성화해요.

  • -var 'NAME=VALUE' - 설정의 루트 모듈에 선언된 단일 입력 변수에 값을 설정해요. 여러 변수를 설정하려면 이 옵션을 여러 번 사용하세요. 자세한 내용은 명령줄의 입력 변수를 참고하세요.

  • -var-file=FILENAME - 설정의 루트 모듈에 선언된 많은 입력 변수.tfvars 파일의 정의를 사용해 값을 설정해요. 여러 파일의 값을 포함하려면 이 옵션을 여러 번 사용하세요. 루트 모듈의 입력 변수에 값을 설정하는 방법은 -var-var-file 옵션 외에도 여러 가지가 있어요. 자세한 내용은 입력 변수에 값 할당을 참고하세요.

HCP Terraform CLI 통합 또는 remote 백엔드를 사용하는 설정에서만 terraform state push-ignore-remote-version 옵션도 받아요.

더 알아보기 (Learn more)