14. Terraform으로 IAM 사용자 프로비저닝

발행: (2026년 2월 8일 오후 06:09 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 전체 텍스트(코드 블록 및 URL 제외)를 제공해 주세요. 텍스트를 받는 대로 요청하신 대로 한국어로 번역해 드리겠습니다.

Lab Information

Nautilus DevOps 팀은 Terraform 프로비저너를 실험하고 있습니다. 여러분의 과제는 IAM 사용자를 생성하고 local-exec 프로비저너를 사용해 확인 메시지를 기록하는 것입니다.

  • iamuser_siva 라는 이름의 IAM 사용자를 생성합니다.
  • IAM 사용자 리소스에 local‑exec 프로비저너를 사용하여 메시지
    KKE iamuser_siva has been created successfully!/home/bob/terraform 아래의 KKE_user_created.log 파일에 기록합니다.
  • 모든 Terraform 설정은 별도의 .tf 파일을 만들지 않고 하나의 main.tf 파일에 넣어야 합니다.
  • variables.tf 파일을 사용해 변수 KKE_USER_NAME을 정의합니다.
  • terraform.tfvars 파일을 사용해 IAM 사용자 이름을 제공합니다.
  • outputs.tf 파일을 사용해 IAM 사용자 이름을 kke_iam_user_name으로 출력합니다.

Lab Solutions

variables.tf

variable "KKE_USER_NAME" {
  type = string
}

terraform.tfvars

KKE_USER_NAME = "iamuser_siva"

main.tf

resource "aws_iam_user" "kke_user" {
  name = var.KKE_USER_NAME

  provisioner "local-exec" {
    command = "echo 'KKE ${var.KKE_USER_NAME} has been created successfully!' >> /home/bob/terraform/KKE_user_created.log"
  }
}

중요:

  • local-exec는 Terraform이 실행되는 머신에서 실행됩니다.
  • 해당 명령은 메시지를 파일에 추가합니다(파일이 이미 존재해도 안전합니다).
  • 정확한 메시지 텍스트는 채점에 중요합니다.

outputs.tf

output "kke_iam_user_name" {
  value = aws_iam_user.kke_user.name
}

Terraform 명령 (순서대로 실행)

terraform init
terraform validate
terraform apply
# 프롬프트가 나오면 입력: yes
bob@iac-server ~/terraform via 💠 default ➜  terraform apply 

Terraform는 선택된 공급자를 사용하여 다음 실행 계획을 생성했습니다.
리소스 작업은 다음 기호로 표시됩니다:
  + create

Terraform는 다음 작업을 수행합니다:

  # aws_iam_user.kke_user가 생성될 것입니다
  + resource "aws_iam_user" "kke_user" {
      + arn           = (known after apply)
      + force_destroy = false
      + id            = (known after apply)
      + name          = "iamuser_siva"
      + path          = "/"
      + tags_all      = (known after apply)
      + unique_id     = (known after apply)
    }

계획: 추가 1개, 변경 0개, 삭제 0개.

출력값 변경:
  + kke_iam_user_name = "iamuser_siva"

이 작업을 수행하시겠습니까?
  Terraform는 위에 설명된 작업을 수행합니다.
  승인하려면 'yes'만 입력 가능합니다.

  값을 입력하세요: yes

aws_iam_user.kke_user: 생성 중...
aws_iam_user.kke_user: 'local-exec'으로 프로비저닝 중...
aws_iam_user.kke_user (local-exec): Executing: ["/bin/sh" "-c" "echo 'KKE iamuser_siva has been created successfully!' >> /home/bob/terraform/KKE_user_created.log"]
aws_iam_user.kke_user: 0초 후 생성 완료 [id=iamuser_siva]

적용 완료! 리소스: 추가 1개, 변경 0개, 삭제 0개.

출력값:

kke_iam_user_name = "iamuser_siva"

확인

로그 파일을 확인하세요:

cat /home/bob/terraform/KKE_user_created.log

예상 출력:

KKE iamuser_siva has been created successfully!

Source:

단계별 설명

실험이 가르치는 내용

  • Terraform 프로비저너
  • 로컬 명령 실행
  • 리소스 생성 후 작업 수행

local-exec란?

Terraform을 실행하는 머신에서 지정된 명령을 실행합니다. AWS 내부에서 실행되는 것이 아닙니다.

왜 IAM 사용자에 프로비저너를 연결하나요?

프로비저너는 리소스가 생성된 후에 실행되므로, 사용자가 성공적으로 프로비저닝된 경우에만 로그 항목이 기록됩니다.

왜 변수를 사용하나요?

  • 값들을 하드코딩하지 않기 위해
  • 구성의 재사용성을 높이기 위해
  • 채점자가 올바른 변수 사용 여부를 확인하기 때문에

terraform apply 시 어떤 일이 일어나나요?

  1. Terraform이 terraform.tfvars 파일을 읽습니다.
  2. IAM 사용자 iamuser_siva를 생성합니다.
  3. 로컬 머신에서 local-exec 명령을 실행합니다.
  4. 확인 메시지를 로그 파일에 추가합니다.
  5. 사용자 이름을 출력합니다.

일반적인 실수

  • 잘못된 파일 경로에 쓰기.
  • remote-exec 대신 local-exec 사용.
  • 정확한 메시지 텍스트를 철자 오류로 작성.
  • 변수를 정의하거나 참조하는 것을 잊음.
  • 출력 이름이 일치하지 않음 (kke_iam_user_name).
Back to Blog

관련 글

더 보기 »