terraform stacks migrate 명령
terraform stacks migrate 명령
terraform stacks migrate 명령 그룹은 전통적인 Terraform 워크스페이스를 Terraform Stacks로 마이그레이션하기 위한 명령들이에요. 여러 워크스페이스를 준비하고, 검증하고, 변환하는 전체 과정을 커맨드라인에서 처리할 수 있어요.
출처: 문서
본문
실험적 기능:
terraform stacks migrate명령 그룹은 실험적이며 기본적으로 비활성화되어 있어요. 이 명령들을 활성화하려면TF_STACKS_MIGRATE_EXPERIMENTAL=true를 설정해야 해요. 프로덕션 리소스에는 이 명령들을 사용하지 마세요.
사용법 (Usage)
$ TF_STACKS_MIGRATE_EXPERIMENTAL=true terraform stacks <global-stacks-flags> migrate <subcommand>
설명 (Description)
terraform stacks migrate 명령 그룹은 HCP Terraform 워크스페이스를 Terraform Stacks로 마이그레이션할 수 있게 해 줘요. 이 명령들은 마이그레이트 매니페스트를 사용해서 소스 구성, 번역된 stacks 구성, 배포 입력값, 상태 산출물 경로를 기술해요.
이 워크플로는 로컬 마이그레이션 준비를 지원해요. HCP Terraform에 Stack을 생성하거나, 구성을 업로드하거나, 원격 상태를 자동으로 이동하지는 않아요.
워크플로 (Workflow)
Migrate 명령들은 다음 로컬 워크플로를 따라가요.
prepare-manifest를 실행해서 하나 이상의 HCP Terraform 워크스페이스에서 마이그레이트 매니페스트를 생성하고 각 워크스페이스의 Terraform 상태 파일을 내려받아요.validate-manifest를 실행해서 매니페스트와 기대되는 파일 시스템 레이아웃이 유효한지 확인해요.translate-config를 실행해서 매니페스트가 참조하는 디렉터리에 Stack 구성을 생성해요.- 생성된 코드를 검토하고 소스에 민감한 입력값에 필요한 변경을 가해요.
translate-state를 실행해서 번역된 Stack 구성에 대한 로컬.tfstackstate산출물을 생성해요.- 생성된 Stack 구성을 업로드하고 HCP Terraform UI에서 마이그레이션을 완료해요.
엔드투엔드 마이그레이션 워크플로는 Migrate HCP Terraform workspaces to Terraform Stacks 문서를 참고해 주세요.
서브커맨드 (Subcommands)
prepare-manifest: HCP Terraform 워크스페이스에서 마이그레이트 매니페스트를 생성함.translate-config: 전통적인 Terraform 루트 모듈을 Terraform Stack 구성으로 변환함.translate-state: Terraform 상태 파일을 Terraform Stack 상태 산출물로 변환함.validate-manifest: 마이그레이트 매니페스트와 기대되는 파일 시스템 레이아웃을 검증함.
마이그레이트 매니페스트 (Migrate manifest)
마이그레이트 매니페스트는 로컬 마이그레이션 워크스페이스를 기술하는 JSON 파일이에요. 기본적으로 명령들은 -chdir 플래그를 적용한 뒤 작업 디렉터리의 migrate-manifest.json을 읽거나 작성해요.
다음 예시는 매니페스트 구조를 보여 줘요.
{
"version": 1,
"source_configuration": "./source-config",
"stacks_configuration": "./stack-config",
"deployments": [
{
"name": "prod",
"workspace_id": "ws-prod",
"inputs": [
{
"key": "region",
"value": "us-east-1",
"hcl": false,
"sensitive": false,
"category": "terraform"
}
],
"state": {
"tfstate": "./tfstates/prod.tfstate",
"tfstackstate": "./tfstackstates/prod.tfstackstate"
}
}
]
}
매니페스트는 다음 필드들을 지원해요.
version: 매니페스트 형식 버전. 지원되는 버전은1이에요.source_configuration: 전통적인 Terraform 루트 모듈의 경로. 상대 경로는 매니페스트 위치 기준으로 해석돼요.stacks_configuration: 번역된 Terraform Stack 구성의 경로. 상대 경로는 매니페스트 위치 기준으로 해석돼요.deployments[].name: 배포 이름.prepare-manifest는 HCP Terraform 워크스페이스 이름을 사용해요.deployments[].workspace_id: HCP Terraform 워크스페이스 ID. HCP Terraform 워크스페이스에 매핑되지 않는 배포에서는 생략할 수 있어요.deployments[].inputs: 워크스페이스 변수에서 파생된 배포 입력값.deployments[].inputs[].key: 입력값 이름.prepare-manifest는 HCP Terraform이 입력 변수로 Terraform에 전달하는 환경 변수에서TF_VAR_접두사를 제거해요.deployments[].inputs[].value: 입력값 값. HCP Terraform이 API에서 민감한 값을 반환하지 않기 때문에 민감한 변수는value를 생략해요.deployments[].inputs[].hcl: HCP Terraform이 값을 HCL로 해석하는지 여부를 나타냄.deployments[].inputs[].sensitive: 값이 민감한지 여부를 나타냄. 일치하는 입력 키에 대해 모든 배포가 동일한 민감도 설정을 사용해야 해요.deployments[].inputs[].category: HCP Terraform 변수 범주. 예:terraform또는env.deployments[].state.tfstate: 배포의 전통적인 Terraform 상태 파일 경로. 상대 경로는 매니페스트 위치 기준으로 해석돼요.deployments[].state.tfstackstate:translate-state가 번역된 로컬 Terraform Stack 상태 산출물을 작성하는 경로. 상대 경로는 매니페스트 위치 기준으로 해석돼요.
전역 플래그 (Global flags)
모든 명령에서 공통으로 사용할 수 있는 플래그에 대한 정보는 Global flags reference 문서를 참고해 주세요.
더 알아보기 (Learn more)
- HCP Terraform 워크스페이스를 Terraform Stacks로 마이그레이션하기
- terraform stacks migrate prepare-manifest 명령
- terraform stacks migrate translate-config 명령
- Terraform Stacks CLI 참조 문서