..

terraform state lock 해제

증상

터미널에서 terraform plan, terraform apply 명령어가 실행되지 않는 문제가 발생했습니다.

terraform 명령어 실행시 Error: Error acquiring the state lock 에러 메세지를 리턴합니다.

$ terraform apply -auto-approve
│ Error: Error acquiring the state lock
│ Error message: ConditionalCheckFailedException: The conditional request failed
│ Lock Info:
│   ID:        c963bf90-7ef8-bd88-2d5b-cbfbab8db3ca
│   Path:      xxxxxxxxx-blahblah-xxxx-terraform-state/aws-xxxx/terraform.tfstate
│   Operation: OperationTypePlan
│   Who:       cysl@xxxx-xxxx.local
│   Version:   1.3.5
│   Created:   2022-11-23 08:10:24.298672 +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.

현재 다른 유저가 .tfstate 파일을 잡고 점유하고 있어서 테라폼 명령어를 실행할 수 없는 상황입니다.

 

환경

로컬 맥북에 설치된 테라폼 환경입니다.

$ terraform -v
Terraform v1.3.5
on darwin_arm64
+ provider registry.terraform.io/hashicorp/aws v4.30.0
+ provider registry.terraform.io/hashicorp/cloudinit v2.2.0

 

해결방법

force-unlock

terraform force-unlock 명령어를 사용해서 state에 걸려있는 lock을 해제할 수 있습니다.

$ terraform force-unlock -force c963bf90-7ef8-bd88-2d5b-cbfbab8db3ca
Terraform state has been successfully unlocked!

The state has been unlocked, and Terraform commands should now be able to
obtain a new lock on the remote state.

락 세션이 해제되었습니다.

이후 실패했던 terraform 명령어를 다시 실행하면 됩니다.

$ terraform apply -auto-approve

 

-lock flag

주의사항

-lock=false 옵션은 Terraform 실행 시에 다른 작업이 인프라스트럭처 상태 파일에 접근하지 못하도록 락을 걸지 않는 것을 의미합니다.

-lock=false 옵션을 사용하면 동시에 여러 명의 엔지니어가 같은 테라폼 리소스를 수정하려고 할 때 충돌이 발생할 수 있습니다. 프로덕션 환경에 있는 리소스의 경우 위험한 상황이 발생할 수 있음을 인지하고 실행하도록 합니다.

 

사용법

terraform force-unlock 방법으로 해결이 안될 경우, 이 방법으로 시도하면 됩니다.

$ terraform apply -lock=false

자세한 사항은 terraform apply 공식문서를 참고하세요.

 

참고자료

terraform lock 해결방안
삵sarc.io에 올라온 가이드

Command: force-unlock
Terraform 명령어 공식문서

Command: apply
Terraform 명령어 공식문서