Назад | Перейти на главную страницу

random_pet в Terraform: Ошибка: Цикл:

Я пытаюсь сгенерировать случайные имена хостов для пары серверов. Однако при запуске terraform apply я получаю сообщение об ошибке «Ошибка: цикл: random_pet.swm01_managers, hcloud_server.swm01_managers»

Вот что я пытаюсь сделать:

variable "swm01_managers_count" {
  default = 5
}

# ─── CREATE RANDOM SERVER HOSTNAMES ─────────────────────────────────────────────

resource "random_pet" "swm01_managers" {
  count = "${var.swm01_managers_count}"
  keepers = {
    id = "${hcloud_server.swm01_managers[count.index].id}"
  }
}

# ─── CREATE DOCKER SWARM MANAGER NODES ──────────────────────────────────────────

resource "hcloud_server" "swm01_managers" {
  count = "${var.swm01_managers_count}"

  name = "${random_pet.swm01_managers[count.index]}"
  image = "ubuntu-18.04"
  server_type = "cx11"
  ssh_keys = "${var.ssh_keys}"
  labels = {
    "env" = "prd"
    "docker_swarm_role" = "manager"
  }

}

Ответ, вот ошибка, которую я получаю:

terraform apply --var-file=prd/prd.tfvars

Error: Cycle: random_pet.swm01_managers, hcloud_server.swm01_managers

Эти два ресурса ссылаются друг на друга путем интерполяции других атрибутов, поэтому Terraform не может решить, какой из них нужно создать в первую очередь.

Terraform не может создавать случайные имена хостов, потому что ему нужны идентификаторы серверов, и он не может создавать серверы, потому что ему нужны их случайные имена хостов.

Я бы сказал, что вам нужно разорвать циклическую зависимость, чтобы случайные имена хостов не зависели от идентификаторов серверов.