해결된 질문
작성
·
395
·
수정됨
1
질문은 부담없이 어떤거든 해주세요!
에러 캡처:
에러 로그:
Planning failed. Terraform encountered an error while generating this plan.
╷
│ Warning: Deprecated Parameters
│
│ with data.terraform_remote_state.vpc,
│ on remote_state.tf line 1, in data "terraform_remote_state" "vpc":
│ 1: data "terraform_remote_state" "vpc" {
│
│ The following parameters have been deprecated. Replace them as follows:
│ * role_arn -> assume_role.role_arn
│
│
│ (and one more similar warning elsewhere)
╵
╷
│ Error: Cannot assume IAM Role
│
│ IAM Role ARN not set
상황 설명:
강의 38:27 부분 따라하는 과정에서 plan 명령어 입력 시 첨부드린 사진과 같이 에러가 발생합니다.
참고로,
terraform/services/hello/devartd_apnortheast2를 cp -R로 복사하여,
terraform/services/hello/neopind_apnortheast2 이와 같이 저만의 디렉터리를 만들어 작업 중입니다.
답변 4
0
Chad님 일단 해당 에러는,
data "terraform_remote_state" "vpc" {
backend = "s3"
config = merge(var.remote_state.vpc.neopindapne2)
}
요렇게 뒤에 merge 할때 assume role을 빼버리면 동작하게 됩니다.
말씀하신대로 해당 변수의 key 형태가 바뀌어서 깨지게 동작하고,
이번 강의에서는 해당 부분을 안쓰기 때문에, 그냥 지워버리면 동작합니다.
하지만 나중에 atlantis 같은 프로그램을 쓰면 assume role 을 동작하게 해야하는데,
이러면 map 에 대한 merge 를 다시 어떻게 해야할지 봐야겠네요~
감사합니다~
코드는 해당 부분들을 미리 제거해놓아야겠네요~
덕분에 바뀐 부분을 저도 알게 됐습니다^^
회사에 있는 코드도 곧 통째로 바꿔야겠네요~
말씀하신대로 ChatGPT에서 알려준게 맞는 것 같습니다.
일단 코드는 지운상태로, 나중에 올바르게 merge를 해놔야겠네요~
assume_role {
role_arn = "<your-role-ARN>"
// You can also specify additional fields like session_name, external_id, etc.
}
## 요게 아니라 아래였는데 remote state 가 변경되어버린거 같네요~
role_arn = "<your-role-ARN>"
data "terraform_remote_state" "vpc" {
backend = "s3"
config = {
bucket = "<your-bucket-name>"
key = "<your-state-file-key>"
region = "<your-bucket-region>"
assume_role {
role_arn = "<your-role-ARN>"
// You can also specify additional fields like session_name, external_id, etc.
}
}
}
0
remote_state 부분에서 참고하는 부분에서 아마 neopidapne2로 바꾸셨을거라 생각합니다.
var_global.tf 있는 파일을 찾으셔서 아래 vpc 정보를 입력해주셔야 할겁니다.
디버깅 성공하시길 기원합니다.!
# VPC
vpc = {
devartdapne2 = {
region = "ap-northeast-2"
bucket = "devart-preprod-apnortheast2-tfstate"
key = "devart/terraform/vpc/devartd_apnortheast2/terraform.tfstate"
}
devartsapne2 = {
region = "ap-northeast-2"
bucket = "devart-preprod-apnortheast2-tfstate"
key = "devart/terraform/vpc/devarts_apnortheast2/terraform.tfstate"
}
0
중급강의 2편에서는 IAM을 Multi-account 로 관리하는 방법을 배울 예정입니다.
대부분의 서비스에서 best practice 는 여러가지의 Multi-account, Multi-VPC를 사용하는 것이 best 입니다. 둘다 제가 소유한 account 의 넘버이고, id는 보통 landing-zone 역할을 하는 계정, prod는 production 이라는 의미입니다~
해당 코드는 중급뿐 아니라 제가 사용해왔던 다양한 코드들을 모아놓은 것들이라( 지속적으로 변경도 하고 ) 미리 설정되어있다고 보시면 됩니다.
inflearn 코드 리뷰를 해드리기가 쉽지 않네요~
service 밑에 remote_state.tf 를 보여주실 수 있을까요~??