몇 대의 서버에 대해 임의의 호스트 이름을 생성하려고 합니다. 그러나 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
variable "swm01_managers_count" {
default = 5
}
# ─── CREATE DOCKER SWARM MANAGER NODES ──────────────────────────────────────────
resource "hcloud_server" "swm01_managers" {
count = var.swm01_managers_count
name = random_pet.swm01_managers[count.index].id
image = "ubuntu-18.04"
server_type = "cx11"
ssh_keys = var.ssh_keys
labels = {
"env" = "prd"
"docker_swarm_role" = "manager"
}
}
# ─── CREATE RANDOM SERVER HOSTNAMES ─────────────────────────────────────────────
resource "random_pet" "swm01_managers" {
count = var.swm01_managers_count
keepers = {
id = hcloud_server.swm01_managers[count.index].id
}
# Add the depends_on attribute to explicitly set the dependency on hcloud_server.swm01_managers
depends_on = [hcloud_server.swm01_managers]
}
random_pet 리소스에 dependency_on = [hcloud_server.swm01_managers]를 추가하면 hcloud_server.swm01_managers 리소스가 생성된 후에 random_pet 리소스를 생성해야 함을 Terraform에 알릴 수 있습니다. 이렇게 하면 순환 종속성 문제가 해결되고 Terraform이 구성을 성공적으로 적용할 수 있습니다.