Linux

Terraform 中的 random_pet:錯誤:循環:

  • August 16, 2019

我正在嘗試為幾台伺服器生成隨機主機名。但是,當執行 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"
 }

}

Ans 這是我得到的錯誤:

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

Error: Cycle: random_pet.swm01_managers, hcloud_server.swm01_managers

這兩個資源通過插值其他屬性相互引用,因此 Terraform 無法確定需要先創建哪個資源。

Terraform 無法創建隨機主機名,因為它需要伺服器的 ID,並且它無法創建伺服器,因為它需要它們的隨機主機名。

你需要打破循環依賴才能讓它工作,我想說的是讓隨機主機名不依賴於伺服器 ID。

引用自:https://serverfault.com/questions/979230