Terraform 中的 random_pet:错误:循环:

Terraform 中的 random_pet:错误:循环:

我正在尝试为几台服务器生成随机主机名。但是,在运行 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

答案1

这两个资源通过插入其他属性来相互引用,因此 Terraform 无法确定需要先创建哪一个。

Terraform 无法创建随机主机名,因为它需要服务器的 ID,并且它无法创建服务器,因为它需要服务器的随机主机名。

您需要打破循环依赖才能使其工作,我想说的是,通过使随机主机名不依赖于服务器 ID。

相关内容