ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • terraform 반복문(count, for_each)
    terraform 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을 사용했다

     

    'terraform' 카테고리의 다른 글

    terraform (vpc, subnet, nat_gateway, route table)  (0) 2023.11.23
    terraform (backend)  (0) 2023.11.22
    terraform (remote state)  (0) 2023.11.21
    terraform 인스턴스 생성  (0) 2023.11.21
Designed by Tistory.