14. 使用 Terraform 配置 IAM 用户

发布: (2026年2月8日 GMT+8 17:09)
4 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我将按照要求保持原有的格式、Markdown 语法和技术术语,仅翻译正文部分。谢谢!

实验信息

Nautilus DevOps 团队正在尝试使用 Terraform provisioner。你的任务是创建一个 IAM 用户,并使用 local-exec provisioner 记录确认信息。

  • 创建一个名为 iamuser_siva 的 IAM 用户。
  • 在 IAM 用户资源中使用 local‑exec provisioner,将消息
    KKE iamuser_siva has been created successfully! 写入位于 /home/bob/terraform 下的文件 KKE_user_created.log
  • 所有 Terraform 配置应放在单个 main.tf 文件中(不要为资源创建单独的 .tf 文件)。
  • 使用 variables.tf 文件定义变量 KKE_USER_NAME
  • 使用 terraform.tfvars 提供 IAM 用户名。
  • 使用 outputs.tf 文件将 IAM 用户名以 kke_iam_user_name 输出。

实验解决方案

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 used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # aws_iam_user.kke_user will be created
  + 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)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + kke_iam_user_name = "iamuser_siva"

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

aws_iam_user.kke_user: Creating...
aws_iam_user.kke_user: Provisioning with '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: Creation complete after 0s [id=iamuser_siva]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

kke_iam_user_name = "iamuser_siva"

验证

检查日志文件:

cat /home/bob/terraform/KKE_user_created.log

预期输出:

KKE iamuser_siva has been created successfully!

步骤说明

本实验的学习内容

  • Terraform provisioner(供应器)
  • 运行本地命令
  • 在资源创建后执行操作

什么是 local-exec

执行 Terraform 的机器上 运行指定的命令,而不是在 AWS 内部运行。

为什么把 provisioner 附加到 IAM 用户上?

Provisioner 会在资源 创建之后 执行,确保只有在用户成功创建后才写入日志条目。

为什么使用变量?

  • 避免硬编码数值。
  • 使配置可复用。
  • 评分系统会检查是否正确使用了变量。

terraform apply 期间会发生什么?

  1. Terraform 读取 terraform.tfvars
  2. 创建 IAM 用户 iamuser_siva
  3. 在本地机器上执行 local-exec 命令。
  4. 将确认信息追加到日志文件。
  5. 输出用户名称。

常见错误

  • 写入错误的文件路径。
  • 使用 remote-exec 而不是 local-exec
  • 拼写错误的确切消息文本。
  • 忘记定义或引用变量。
  • 输出名称不匹配(kke_iam_user_name)。
0 浏览
Back to Blog

相关文章

阅读更多 »

观察峰值流量的剖析

执行摘要:数字峰值流量事件——从现场体育流媒体到电商限时抢购以及假日高峰——对每个…