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

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 リソースにdepends_on = [hcloud_server.swm01_managers] を追加することで、hcloud_server.swm01_managers リソースの作成後に random_pet リソースを作成する必要があることを Terraform に通知します。これにより循環依存関係の問題が解決され、Terraform は構成を正常に適用できるようになります。

関連情報