Workspace를 사용하는 Terraform에서 state 파일을 관리하는 S3 세그먼트의 키 변경
9741 단어 tech
개요
다음 설정에서 사용된 Terraform의 Workspace 사용을 중지해야 합니다.
물통 열쇠를 변경한 내용은 다음과 같다.
Workspace を利用するとデフォルトで設定される Workspace_key_prefix /env: を削除した構成に変更
変更前 : s3_bucket/env:/stg/sample/terraform.tfstate
変更後 : s3_bucket/stg/sample/terraform.tfstate
실패한 프로그램 변경
워크스페이스를 사용한 상태에서 S3의 키만 변경되면 워크스페이스가 유효
s3_bucket/env:/stg/stg/sample/terraform.tfstate
하기 때문에 만들었다.terraform {
required_version = "=0.14.6"
backend "s3" {
bucket = "s3_buckete"
- key = "sample/terraform.tfstate"
+ key = "stg/sample/terraform.tfstate"
region = "ap-northeast-1"
}
}
절차.
절차를 대략적으로 설명하면 로컬에서 S3 구간의state 파일을 가져오고 새 키로 S3에 새로운state 파일을 가져옵니다.
전제 조건
Workspace에서 사용
stg
.실행
terraform init
, Workspace에서 선택stg
의 상태.1. S3의 state 파일 가져오기
Backend를 설정하면 다음과 같습니다.
terraform {
required_version = "=0.14.6"
backend "s3" {
bucket = "s3_buckete"
key = "sample/terraform.tfstate"
region = "ap-northeast-1"
}
}
이 부분에 대해 평론을 하고 아래 명령을 집행한다.terraform init
에 다음 정보가 표시됩니다. yes
를 입력하십시오.Initializing the backend...
Terraform has detected you're unconfiguring your previously set "s3" backend.
Do you want to migrate all Workspaces to "local"?
Both the existing "s3" backend and the newly configured "local" backend
support Workspaces. When migrating between backends, Terraform will copy
all Workspaces (with the same names). THIS WILL OVERWRITE any conflicting
states in the destination.
Terraform initialization doesn't currently migrate only select Workspaces.
If you want to migrate a select number of Workspaces, you must manually
pull and push those states.
If you answer "yes", Terraform will migrate all states. If you answer
"no", Terraform will abort.
Enter a value:
로컬 작업 디렉터리에 S3에서 관리하는state와 같은 파일을 만듭니다../terraform.tfstate.d/stg/terraform.tfstate
2. Workspace를default로 변경
Workspace에서
default
를 선택하려면 다음 명령을 실행합니다.terraform workspace select default
다음 명령을 사용하여 선택한 Workspace를 확인할 수 있습니다.terraform workspace show
다음 명령을 실행합니다.terraform state list
워크스페이스가 default
로 전환되었기 때문에state 파일이 존재하지 않을 때 표시됩니다.No state file was found!
State management commands require a state file. Run this command
in a directory where Terraform has been run or use the -state flag
to point the command to a specific state location.
3. 로컬에서 state 파일 만들기
작업 디렉토리 바로 아래에 생성
terraform.tfstate
됩니다.terraform state push terraform.tfstate.d/stg/terraform.tfstate
Workspace를 관리하는 state 파일terraform.tfstate.d
디렉터리를 삭제합니다.rm -r terraform.tfstate.d
다음 명령을 실행합니다.방금 No state file was found!
가 나왔는데 이번에는 자원이 나왔습니다.terraform state list
4. 새 키로 S3 구간에 state 파일 만들기
방금 댓글이 출력한 다음 내용은 댓글을 취소하고 변경합니다
key
.terraform {
required_version = "=0.14.6"
backend "s3" {
bucket = "s3_buckete"
- key = "sample/terraform.tfstate"
+ key = "stg/sample/terraform.tfstate"
region = "ap-northeast-1"
}
}
다음 명령을 실행합니다.terraform init
다음 정보를 표시하고 yes
를 입력합니다.
Initializing the backend...
Do you want to copy existing state to the new backend?
Pre-existing state was found while migrating the previous "local" backend to the
newly configured "s3" backend. No existing state was found in the newly
configured "s3" backend. Do you want to copy this state to the new "s3"
backend? Enter "yes" to copy and "no" to start with an empty state.
Enter a value:
S3 구간에 state 파일을 만듭니다.5. 필요 없는 로컬 파일 삭제
로컬state 파일이 필요하지 않기 때문에 삭제합니다.
rm terraform.tfstate
rm terraform.tfstate.backup
6. 동작 확인
신중을 기하기 위해 마지막으로 동작을 확인한다.
디렉토리 삭제
.terraform
.rm -r .terraform
다음 명령을 집행하고 차질이 없으면 된다.terraform init
terraform plan
7. 변경 전state 파일 삭제
Workspace를 사용할 때 state 파일이 S3에 남아 있습니다.
s3_bucket/env:/stg/sample/terraform.tfstate
필요 없습니다. 삭제하십시오.최후
단지 Backend S3의 키를 변경할 뿐, 상당히 심각하다.
더 쉬운 방법이 있다면 평론을 알려주세요.
Reference
이 문제에 관하여(Workspace를 사용하는 Terraform에서 state 파일을 관리하는 S3 세그먼트의 키 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kobayashi_m42/articles/terraform-change-backend텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)