Сегодня я написал некоторую конфигурацию, в которой используются «циклы», но только потом мне стало интересно, правильный ли это путь, поскольку 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, чтоможет быть катастрофическим, так как у каждого пользователя будут свои ключи, и это создаст беспорядок.Это относится и к другим типам ресурсов, хотя есть ресурсы, которые при повторном удалении и создании не приведут к такой путанице, но все же это неправильно.
Итак, на мой вопрос, как и в заголовке- может я все неправильно понял?Или это просто так работает?(делая весь этот «петлевой» механизм бесполезным)