terraform backend 설정에 관한 글 : [Terraform] 실행 환경 분리와 Backend 설정 (AWS/Terraform Cloud)
terraform import에 관한 글 : [Terraform] Terraform import와 terraforming (AWS)
태초에....A 환경과 B 환경이 있었습니다
A와 B는 S3를 backend로 사용하고 있고...서로의 output을 받아오기 위해 data로 remote_state 블럭을 설정해 두었습니다
A 환경에서 실제 리소스들을 잔뜩 import를 해야 하는데, B 환경에서의 output을 사용할 일이 생겨서 아래와 같은 코드들을 추가했습니다
## a/main.tf
locals {
test = data.terraform_remote_state.b.outputs.test
}
## b/main.tf
output "test" {
value = "테스트 아웃풋입니당"
}
B 환경에서 apply를 돌리고, S3의 tfstate file에 test라는 output이 적혀있는걸 잘 확인했습니다
그러나 A 환경에서는 다른 팀원들과의 협업을 위해 apply 없이 import만 진행하고 있었는데요...!
심지어 A 환경에서 그냥 plan을 돌릴 땐 문제 없으나, import 시에만 위와 같은 에러들이 떴었는데요...
A 환경에서 state pull 명령을 내려보니 정말로 test라는 output이 없었습니다
결론은, 아래의 data block이 apply가 돌아가지 않았기 때문에 최신 state를 불러오지 못하는 것이었습니다
data "terraform_remote_state" "b" {
backend = "s3"
config = {
bucket = "honglab-tf-test"
key = "b/terraform.tfstate"
region = "ap-northeast-2"
}
}
저는 remote state block은 그냥 해당 tfstate 파일을 바로바로 읽어오는건줄 알았는데, apply시 마다 스냅샷을 찍어 가져오는 형태였나 봅니다
협업 때문에 전체 apply는 부담스러워서, 해당 data block만 apply해준 후 import를 진행해 주었습니다
terraform apply -target data.terraform_remote_state.b
끝
'공부 > IaC' 카테고리의 다른 글
[Terraform/EKS/k8s] import 시 Kubernetes: Unauthorized (1) | 2022.06.28 |
---|---|
[Terraform] MAC에서 tfenv로 terraform 특정 버전 사용 (1) | 2022.05.14 |
[Terraform] map 타입 변수 validation 설정하기 (0) | 2022.02.21 |
[Terraform] For Expression을 사용해 for_each문의 output 설정하기 (1) | 2022.02.18 |
[M1 MAC Terraform] The plugin.(*GRPCProvider).ValidateProviderConfig request was cancelled. (3) | 2022.01.24 |
댓글