brunch
매거진 테라폼 AWS

12. 5주차- 테라폼-협업-테라폼 클라우드 잠금 기능

by Master Seo

<1> 프로비저닝 수행 시 동일한 State 접근 못하게 잠금 → State 마지막 상태에 대한 무결성 확보

<2> 삭제




<1> 프로비저닝 수행 시 동일한 State 접근 못하게 잠금 → State 마지막 상태에 대한 무결성 확보



1

Jerry가 프로비저닝 실행 시 변경 사항이 발생하도록 코드를 수정한다고 가정하여, null_resource에 정의한 내용이 항상 수행되도록 trigger를 추가함

trigger에 timestamp() 함수를 지정하면 테라폼 프로비저닝 실행마다 다른 값이 저장되므로 항상 변경이 유발함


2

jerry 루트 모듈에서 main.tf 파일 코드 변경 및 실행 - 주석 해제



resource "null_resource" "configure-cat-app" {

depends_on = [aws_eip_association.hashicat]


triggers = {

build_number = timestamp()

}



#

terraform apply -var=prefix=dev

...

Enter a value: <대기>



# null_resource.configure-cat-app must be replaced

-/+ resource "null_resource" "configure-cat-app" {

~ id = "8047617178209046850" -> (known after apply)

+ triggers = { # forces replacement

+ "build_number" = (known after apply)

}

}




3


신규 터미널에서 tom 루트 모듈에서 실행


cd

cd terraform-aws-collaboration-tom


#

terraform apply -var=prefix=dev

│ Error: Error acquiring the state lock

│ Error message: workspace already locked (lock ID: "gasida-org/terraform-aws-collaboration")

│ Lock Info:

│ ID: 4869b6f7-8c57-6f50-857c-9730999b8b2a

│ Path:

│ Operation: OperationTypeApply

│ Who: gasida@seojonghoui-MacBookPro.local

│ Version: 1.5.1

│ Created: 2023-08-06 09:01:03.131157 +0000 UTC

│ Info:

│ Terraform acquires a state lock to protect the state from being written

│ by multiple users at the same time. Please resolve the issue above and try

│ again. For most commands, you can disable locking with the "-lock=false"

│ flag, but this is not recommended.




2

TFC Workspace 에 State 확인

60 lock.png



4

jerry 루트 모듈에서 실행


#

terraform apply -var=prefix=dev

...

Enter a value: yes


Apply complete! Resources: 1 added, 0 changed, 1 destroyed.

Outputs:



6

TFC Workspace 에 State → [Changes in this version] 에서 변경 사항 확인


unlock

상태 변경이 하나더 추가 됨

70 unlock.png





<2> 삭제


1

terraform destroy -auto-approve -var=prefix=dev


Destroy complete! Resources: 12 destroyed.


2

TFC에 워크스페이스 삭제 : Setting → Destruction and Deletion 클릭 후 삭제


3

Github Repo 삭제 : terraform-aws-collaboration → Setting → Delete this repository


4

로컬 디렉터리 삭제 : terraform-aws-collaboration-tom , terraform-aws-collaboration-jerry



5

AWS 콘솔에서 리소스 확인후 삭제




휴식

https://vclock.kr/timer/#countdown=00:10:00&enabled=0&seconds=0&sound=xylophone&loop=1



다음과정

https://brunch.co.kr/@topasvga/3407


전체 보기

https://brunch.co.kr/@topasvga/3347

terraform.png

다음은 주말 CloudNet 테라폼 스터디 내용 참고하여 정리한 부분입니다.

https://gasidaseo.notion.site/gasidaseo/CloudNet-Blog-c9dfa44a27ff431dafdd2edacc8a1863



감사합니다.



keyword
매거진의 이전글(공유) 테라폼 시작하기 -AWS-2023- 4시간