EMD Blog

Terraform tfe Provider OS 종속 이슈 본문

IaC/Terraform

Terraform tfe Provider OS 종속 이슈

EmaDam 2022. 9. 4. 07:55

tfe Provider는 Terraform Cloud를 생성하기 위한 코드이기 때문에 backend 관리에 보통 s3+DynamoDB를 활용한다. 하지만 단순하게 내용 공유 목적으로 코드를 공유 할 경우 state파일을 그냥 전달 하는 경우가 있는데 이 때 state 파일을 인식함에도 불구하고 모든 리소스를 새로 create 하려는 plan을 볼 수 있다.

https://stackoverflow.com/questions/67204811/terraform-failed-to-install-provider-doesnt-match-checksums-from-dependency-l

https://www.terraform.io/language/files/dependency-lock#dependency-lock-file 내용을 보면 tfe provider의 .terraform.lock.hcl의 해시 값이 OS에 따라 다르기 때문이라는 것임.

그런데 state 파일이 문제가 아니고 lock.hcl 해시 값이 문제라면 Backend를 원격으로 저장해도 문제가 되는 것이 아닌지..? 이 부분 테스트해서 확인 필요함.

추가로 테스트 해본 결과, 로그인과 export TFE_TOKEN을 같이 해주면 정상 동작함. 그런데 로그인과 TFE_TOKEN은 같은 token 값이 사용됨.(애초에 단일 계정으로 인증하는 것임) 왜 둘이 같이 사용해야 정상동작 하는지 원인 파악해야할 필요 있음.

결국 이슈는 OS 문제, 로그인 문제 두 가지가 있으며 새로운 OS 에서 실행 시 아래와 같은 과정을 거쳐야 함.

  1. 아래 명령어 사용
terraform providers lock -platform=windows_amd64 -platform=darwin_amd64 -platform=linux_amd64
  1. terraform login
  2. export TFE_TOKEN

로그인 문제에 대해서는 아래와 같은 문서를 확인 할 수 있었으나 명확한 답은 아님.

https://registry.terraform.io/providers/hashicorp/tfe/latest/docs#authentication

정확한 내용 확인 후 추가 정리 하겠음.

=================================

lock.hcl은 tfe provider만 생성되는 것은 아니였음. 아래 문서를 보면 “.terraform 하위 디렉터리에 Terraform이 캐시하는 다양한 항목에 대한 잠금 파일임을 나타내기 위한 것”이라고 나와 있음.

https://www.terraform.io/language/files/dependency-lock#dependency-lock-file