如何通过启用Terraform的控制台登录创建多个IAM用户

时间:2019-07-20 03:51:43

标签: terraform amazon-iam multiple-users

我需要能够为我的开发人员组创建多个iam帐户,并使用terraform启用控制台登录

这有点棘手,因为在terraform中启用登录配置文件时我们必须使用密钥库。有没有办法做到这一点

variable "iam_users" {
  description = "List of iam users that that needs to be created"
  type = "list"
}

# values assigned in .tfvars file
iam_users = ["mahela","bhanuka","duminda"]

resource "aws_iam_user_login_profile" "login_profile" {
  count = "${length(var.iam_users)}"
  user = "${element(var.iam_users,count.index)}"
  password_reset_required = true
  pgp_key = "keybase:mahela"
}

由于计数是在资源中定义的,因此我无法从下面的代码中获得此用户列表的输出

output "password" {
  value = "${aws_iam_user_login_profile.login_profile.encrypted_password}"
}

创建用户时是否必须使用模块?借助该帮助,可以获得每个用户的加密密码输出? 我还必须为每个用户使用不同的密钥库用户名吗?这将再次变得棘手:(

1 个答案:

答案 0 :(得分:2)

count块中设置resource时,在其他表达式中对该资源的引用将产生实例对象列表,而不是单个实例对象,因此您无法访问实例属性直接。

如果您希望将地图从用户返回到密码,那么可以假设您使用的是Terraform 0.12或更高版本,可以编写如下的output表达式:

output "passwords" {
  value = { for p in aws_iam_user_login_profile.login_profile : p.user => p.encrypted_password }
}

与Terraform 0.11兼容的变体如下所示:

output "passwords" {
  value = "${zipmap(aws_iam_user_login_profile.login_profile.*.user, aws_iam_user_login_profile.login_profile.*.encrypted_password)}"
}