variable "ec2_type" {
description = "Create EC2 with these types"
type = map(string)
default = {
micro = "t2.micro"
medium = "t2.medium"
large = "t2.large"
}
}
1.2. for_each 내 List 사용
for_each 내에서 list 리소스를 사용하기 위해 toset 함수가 필요
for_each 는 기본적으로 List 를 지원하지 않아 toset 함수를 사용해야한다.
이전 포스팅에서 사용했던 iam.tf 파일을 for_each 구문을 활용해서 생성해보자
// iam.tf 내용
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_iam_user" "myiam" {
for_each = toset(var.user_names)
name = each.value
}
// variables.tf 내용
variable "user_names" {
description = "Create IAM users with these names"
type = list(string)
default = ["terraform", "aws", "local"]
}
output "all_users" {
value = aws_iam_user.myiam
}
count 로 생성한 리소스와는 다르게 plan 출력 시, 배열(숫자)이 아닌 설정한 변수값이 출력되는 것을 확인할 수 있다.
그렇다면 output 출력 내용을 살펴보자 !!
Output이 배열이 아닌 맵 형식으로 출력되는 것을 확인 할 수 있다.
이렇게 되면 특정 리소스만 골라서 삭제하는 것도 가능해진다.
variables.tf 에서 "aws" 리소스를 삭제한 후에 plan 과 apply 의 변화는 어떻게 될까??