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 참조 문서