terraform

terraform 반복문(count, for_each)

짱구는굿 2023. 11. 21. 16:25

count

IAM (Identity and Access Management) 사용자를 생성하고, 그들의 Amazon Resource Names (ARNs)을 출력하는 간단한 Terraform 코드입니다

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_iam_user" "user1" {
  name = "user-1"
}

resource "aws_iam_user" "user2" {
  name = "user-2"
}

resource "aws_iam_user" "user3" {
  name = "user-3"
}

output "user_arns" {
  value = [
    aws_iam_user.user1.arn,
    aws_iam_user.user2.arn,
    aws_iam_user.user3.arn,
  ]
}

 

terraform plan -> 파일 내용 확인
terraform apply -> 파일 실행

 

 

aws로 확인

 

 

AWS IAM 사용자를 10개 생성하고 각 사용자의 ARN을 출력하는 예시입니다

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_iam_user" "count" {
  count = 10

  name = "count-user-${count.index}"
}


output "count_user_arns" {
  value = aws_iam_user.count.*.arn
}

 

terraform plan -> 파일 내용 확인
terraform apply -> 파일 실행

 

 

aws로 확인

 

for_each

AWS IAM 사용자를 여러 개 생성하고 각 사용자의 ARN을 출력하는 예시입니다

resource "aws_iam_user" "for_each" {
  for_each = toset([
    "for_each_set_user1",
    "for_each_set_user2",
    "for_each_set_user3",
 ])
  
  name = each.key
}

output "for_each_set_arns" {
  value = values(aws_iam_user.for_each).*.arn
}
for_each 속성 중 사용자 이름을 나타내는 set 을 사용했다
each.key를 사용하여 사용자 이름이 집합의 각 원소로 지정된다

 

 

 

AWS IAM 사용자를 여러 명 생성하고, 각 사용자에 대한 정보 및 태그를 사용하여 출력하는 예시입니다

resource "aws_iam_user" "for_each_map" {
 for_each = {
    alice = {
      level = "low"
      manager = "god1"
 }  

    bob = {
      level = "mid"
      manager = "god2"
 }

    john = {
      level = "high"
      manager = "god1"
 }
}
  name = each.key

  tags = each.value
}

output "for_each_map_arns" {
  value = values(aws_iam_user.for_each_map).*.arn
}

 

for_each속성 중 정보 및 태그를 나타내는 map을 사용했다