본문 바로가기

infra(terraform, aws, git)

terraform -lock=false??

terraform으로 backend와 dynamodb를 지정하여 state locking을 시도했을 때 아래와 같은 에러를 만나고 그냥 시키는 대로 -lock=false를 줬을 것이다.

하지만 위의 에러에서 제일 마지막에 말했듯이 하면 위험하다는 뜻이기도 하기때문에 왜 에러가 발생하는지 어떻게 고치는지 알아보자.

 

사실 엄청 쉬운 문제다. 전에 내가 작성한 블로그에서 dynamodb가 lock권한을 부여할 때 key값을 보고 파일을 확인하는 절차를 따른다고 했다.

https://cksdid4993.tistory.com/64

 

(에러)terraform dynamodb validException key error

terraform을 실행시킬 때 backend라는 개념과 dynamodb라는 개념이 있다. 이러한 개념을 잠깐 설명하자면, 만약 여럿이서 resource를 관리하려고 할 때 서로 같은 state를 공유하기 위해 backend에 state file을..

cksdid4993.tistory.com

 

그렇다면 만약 lock 권한을 주려고 하는데 파일이 없다면? tfstate파일이 애초에 처음에는 없을 것이다. 그렇다면 당연히 위의 에러처럼 resource not found 에러가 뜨면서 lock을 줄 수 없는 상태가 된다.

 

따라서 -lock=false를 주면서 lock 권한을 무시하고 처음에 table을 생성한다음 다음부터 tfstate파일을 참조할 때에는 -lock=false를 안줘도 되는 것이다.

블로그를 보면서 처음에 dynamodb를 생성하고 -lock=false로 준다음 apply하면 아래와 같이 파일이 생성된다.

 그렇다면 다른 location에서 init할때 dynamo table을 같은 걸 주고 apply나 plan을 실행하면 -lock=false를 더이상 안줘도 된다.