terraform stacks migrate translate-state 명령

terraform stacks migrate translate-state 명령

terraform stacks migrate translate-state 명령은 Terraform 상태 파일을 Terraform Stack 상태 산출물로 변환하는 명령이에요. 전통적인 구성을 Stack 구성으로 번역한 뒤, 그 구성 레이아웃에 맞는 상태 산출물이 필요할 때 사용해요.

출처: 문서

본문

실험적 기능: terraform stacks migrate 명령 그룹은 실험적이며 기본적으로 비활성화되어 있어요. 이 명령들을 활성화하려면 TF_STACKS_MIGRATE_EXPERIMENTAL=true를 설정해야 해요. 프로덕션 리소스에는 이 명령들을 사용하지 마세요.

사용법 (Usage)

$ TF_STACKS_MIGRATE_EXPERIMENTAL=true terraform stacks <global-stacks-flags> migrate translate-state <options>

상대 경로는 -chdir 적용 후 작업 디렉터리를 기준으로 해석돼요.

설명 (Description)

전통적인 구성을 Stack 구성으로 번역한 뒤, 번역된 구성 레이아웃과 일치하는 상태 산출물이 필요할 때 terraform stacks migrate translate-state를 사용해요.

이 명령은 마이그레이트 매니페스트를 받아 매니페스트에 선언된 모든 배포를 번역하거나, 명시적 경로를 받아 하나의 Terraform 상태 파일을 번역할 수 있어요. 명시적 경로를 사용하면 이 명령은 다음 파일들을 읽어요.

  • 전통적인 Terraform 상태 파일
  • 원래 .tfstate 파일을 만든 원래 Terraform 루트 모듈
  • 대상 컴포넌트와 배포를 포함하는 번역된 Stack 구성

이 명령은 번역된 Stack 구성과 함께 사용할 수 있는 .tfstackstate 산출물을 작성해요.

이 명령은 로컬 파일에서만 동작해요. Stack을 생성하거나, 구성을 업로드하거나, 원격 상태를 자동으로 이동하지는 않아요.

명령을 실행하기 전에 다음 요구 사항을 충족해야 해요.

  • 이 명령이 .terraform.lock.hcl 의존성 잠금 파일과 설치된 프로바이더 캐시를 재사용할 수 있도록 원래 Terraform 구성 디렉터리에서 terraform init을 실행해요.
  • 번역된 Stack 구성이 이미 로컬에 존재해야 해요.
  • 명령이 번역된 컴포넌트 소스에 필요한 초기화된 로컬 모듈 번들을 사용할 수 있도록 번역된 Stack 구성 디렉터리에서 terraform stacks init을 실행해요.
  • 번역된 Stack 구성은 -stack-config 아래에서 자체 포함(self-contained)되어야 해요. 컴포넌트 소스와 중첩된 로컬 모듈 소스는 해당 디렉터리 트리 안에서 해석되어야 해요.
  • 각 생성된 .tfstackstate 출력 경로는 존재하는 쓰기 가능한 디렉터리를 가리키고 사용하지 않은 파일 이름을 사용해야 해요.

성공 시 사람이 읽기 좋은 출력은 출력 경로, 컴포넌트 수, 리소스 수, 출력 값 수를 포함해요. JSON 출력은 이 요약에 더해 컴포넌트 주소, 리소스 유형 수, 프로바이더 주소, 출력 이름(존재할 때)을 포함해요.

옵션 (Options)

  • -migrate-manifest: 매니페스트에 선언된 모든 배포를 번역할 마이그레이트 매니페스트 경로. -tfstate, -source-config, -stack-config, -output와 상호 배타적이에요.
    • 선택 사항.
    • 문자열.
  • -tfstate: 번역할 전통적인 .tfstate 파일의 경로.
    • 명시적 상태 파일 경로를 제공하면 필수.
    • 문자열.
  • -source-config: 원래 .tfstate 파일을 만든 원래 Terraform 루트 모듈이 들어 있는 디렉터리.
    • 명시적 상태 파일 경로를 제공하면 필수.
    • 문자열.
  • -stack-config: 번역된 Stack 구성이 들어 있는 디렉터리. 컴포넌트 및 배포 구성 파일을 포함해야 해요. 모든 컴포넌트 소스와 중첩된 로컬 모듈 소스는 이 디렉터리 트리 안에서 해석되어야 해요.
    • 명시적 상태 파일 경로를 제공하면 필수.
    • 문자열.
  • -output: 번역된 Stack 상태 산출물을 작성할 경로. 상위 디렉터리가 이미 존재하고 쓰기 가능해야 해요. 출력 파일은 이미 존재해서는 안 돼요. 이 명령은 기존 산출물을 덮어쓰지 않아요.
    • 명시적 상태 파일 경로를 제공하면 필수.
    • 문자열.
  • -json: 기본적인 사람이 읽기 좋은 텍스트 형식 대신 JSON 형식으로 결과를 출력함.
    • 선택 사항.
    • Boolean 플래그.
    • 기본값: false.

예시 (Examples)

다음 명령은 기본 마이그레이트 매니페스트에 선언된 모든 상태 파일을 번역해요.

$ TF_STACKS_MIGRATE_EXPERIMENTAL=true terraform stacks migrate translate-state

다음 명령은 특정 마이그레이트 매니페스트에 선언된 상태 파일을 번역해요.

$ TF_STACKS_MIGRATE_EXPERIMENTAL=true terraform stacks migrate translate-state \
  -migrate-manifest=./migration/migrate-manifest.json

다음 명령은 하나의 Terraform 상태 파일을 Terraform Stack 상태 산출물로 번역해요.

$ TF_STACKS_MIGRATE_EXPERIMENTAL=true terraform stacks migrate translate-state \
  -tfstate=./workspace.tfstate \
  -source-config=./terraform \
  -stack-config=./stack \
  -output=./out/workspace.tfstackstate

다음 명령은 상태 파일을 번역하고 결과 요약을 JSON 형식으로 반환해요.

$ TF_STACKS_MIGRATE_EXPERIMENTAL=true terraform stacks migrate translate-state \
  -tfstate=./workspace.tfstate \
  -source-config=./terraform \
  -stack-config=./stack \
  -output=./out/workspace.tfstackstate \
  -json

전역 플래그 (Global flags)

모든 명령에서 공통으로 사용할 수 있는 플래그에 대한 정보는 Global flags reference 문서를 참고해 주세요.

더 알아보기 (Learn more)

  • HCP Terraform 워크스페이스를 Terraform Stacks로 마이그레이션하기
  • terraform stacks migrate prepare-manifest 명령
  • terraform stacks migrate validate-manifest 명령
  • terraform stacks migrate 명령