При использовании динамического списка c, если запись добавляется или удаляется, каждая запись, следующая за измененным индексом, будет обновляться.
Как сделать так, чтобы terraform вставил только новую запись?
Пример
У меня есть список
(применяется терраформ)
Теперь измените мой список, добавив 15
(применяется терраформ) Terraform собирается заменить 20 -> 15, 30 -> 20 и создать 30
Простое решение
Одно из решений объявление всех элементов по отдельности (без использования списка)
Комплексное решение
Перед применением я мог напрямую изменить файл состояния для изменения индексов. Это кажется опасным.
Больше контекста
У меня есть файл данных json с сотнями записей DNS. Я загружаю это в список, используя data.external
data "external" "read_dns_entries" {
program = [ "${path.module}/terraform_script_dns_entries_from_file" ]
}
locals {
file_dns_records_without_aliases = jsondecode(data.external.read_dns_entries.result.EntriesWithoutAlias)
}
resource "aws_route53_record" "record" {
count = length(local.file_dns_records_without_aliases)
zone_id = local.file_dns_records_without_aliases[count.index].ZoneID
name = local.file_dns_records_without_aliases[count.index].Name
type = local.file_dns_records_without_aliases[count.index].Type
allow_overwrite = true
ttl = local.file_dns_records_without_aliases[count.index].TTL
records = local.file_dns_records_without_aliases[count.index].Records
lifecycle {
create_before_destroy = true
}
}
Я использую Terraform v0.12.18
Ссылки
Этот закрытый вопрос говорит об этом. https://github.com/hashicorp/terraform/issues/3449
Он надеялся, что Terraform 0.12 исправит это с помощью for_each
Бесполезны ли "петли" terraform? Или я что-то упустил?