【发布时间】:2019-03-14 07:48:50
【问题描述】:
我今天写了一些使用“循环”的配置,但后来我才想知道这是否是正确的路径,因为 terraform 将状态文件中的资源作为列表/数组保存。
考虑以下配置:
locals {
users_list = [ "ab", "cd", "ef" ]
}
resource "aws_iam_user" "users" {
count = "${length(local.users_list)}"
name = "${local.users_list["${count.index}"]}"
path = "/"
}
运行 'terraform apply' 将创建用户,并在状态文件中创建以下资源:
- aws_iam_user.users[0]
- aws_iam_user.users[1]
- aws_iam_user.users[2]
但是,例如,如果我删除了前两个用户中的一个,如下所示:
locals {
users_list = [ "cd", "ef" ]
}
然后 terraform 将尝试更改状态文件 ( [0] --> "cd", [1] --> "ef" ) 中的资源,以及 AWS 中的用户本身,这可能是灾难性的,因为每个用户都有自己的密钥,这样做会造成混乱。这也与其他资源类型有关,虽然有些资源删除并重新创建不会造成如此混乱,但这仍然是错误的。
所以,对于我的问题,如标题所示 - 也许我完全错了?或者这就是它的工作方式? (使整个“循环”机制无用)
【问题讨论】:
-
在上述情况下删除 ab 用户会导致什么问题?键是否也在数组中创建?
标签: terraform