У меня есть некоторые ресурсы, чье значение count
параметризовано переменной. Это используется для создания ресурсов виртуальной машины, а также null_resource
с, например, запуск сценариев развертывания на них. Когда я уменьшаю значение счетчика с 2 до 1 и применяю, я получаю ошибку.
Терраформ выполняет plan
без нареканий. Но когда я apply
, он говорит мне, что есть цикл:
Ошибка: Цикл: null_resource.network_connection_configuration [7] (уничтожить), null_resource.network_connection_configuration [8] (уничтожить), null_resource.network_connection_configuration [3] (уничтожить), null_resource.network_connection_configuration_connection [0] (уничтожить), null_resource.network_connection_configuration [6] (уничтожить), null_resource.network_connection_configuration [1] (уничтожить), null_resource.network_connection_configuration [9] (уничтожить), null_resource.network_connection_configuration [null_connection_configuration] [10] (уничтожить), hcloud_server.kafka [2] (уничтожить), local.all_machine_ips, null_resource.network_connection_configuration (подготовить состояние), null_resource.network_connection_configuration [5] (уничтожить)
Вот соответствующая часть файла:
variable kafka_count {
default = 3
}
resource "hcloud_server" "kafka" {
count = "${var.kafka_count}"
name = "kafka-${count.index}"
image = "ubuntu-18.04"
server_type = "cx21"
}
locals {
all_machine_ips = "${hcloud_server.kafka.*.ipv4_address)}"
}
resource "null_resource" "network_connection_configuration" {
count = "${length(local.all_machine_ips)}"
triggers = {
ips = "${join(",", local.all_machine_ips)}"
}
depends_on = [
"hcloud_server.kafka"
]
connection {
type = "ssh"
user = "deploy"
host = "${element(local.all_machine_ips, count.index)}"
port = 22
}
// ... some file provisioners
}
Когда я пытаюсь найти цикл, используя визуализацию:
terraform graph -verbose -draw-cycles
Нет видимых циклов.
Когда я использую TF_LOG=1
журнал отладки не показывает ошибок
Так что проблема в том, что я могу увеличить счет, но не уменьшить его. Я не хочу взламывать файл вручную, так как это означает, что я не смогу уменьшить его в будущем! Я использую Terraform v0.12.1.
Существуют ли стратегии для устранения этой ситуации?