我需要能够为我的开发人员组创建多个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}"
}
创建用户时是否必须使用模块?借助该帮助,可以获得每个用户的加密密码输出? 我还必须为每个用户使用不同的密钥库用户名吗?这将再次变得棘手:(
答案 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)}"
}