目前正在尝试使用Terraformv0.12.28使新的Hetzner负载平衡器与多个服务器协同工作。提供的文档只显示一个服务器的情况,这对于负载均衡器来说是相当奇怪的:)
服务器是使用以下计数创建的:
resource "hcloud_server" "web" {
count = var.instances
name = "web-server-${count.index}"
...
}要将服务器添加到负载均衡器中,应该使用如下模式:
target {
type = "server"
server_id = hcloud_server.web.id
}然而,在这里,任何类型的for或for_each似乎都不适用于添加所有创建的实例。
您能告诉我如何在负载均衡器中添加计数创建的服务器吗?
谢谢!
发布于 2020-08-01 10:13:21
我认为动态块可以在你的情况下使用。
您可以执行类似于以下操作的操作(动态块是target;docs中的示例,因此可能需要对实际代码进行调整):
resource "hcloud_load_balancer" "load_balancer" {
name = "my-load-balancer"
load_balancer_type = "lb11"
location = "nbg1"
dynamic "target" {
for_each = hcloud_server.web
content {
type = "server"
server_id = target.value["id"]
}
}
}发布于 2020-08-19 10:49:19
我一直在尝试做同样的事情,最后我改变了目标的类型,从一个服务器到另一个标签。
在每个资源上,您可以设置一个标签,例如"env=dev“,然后在负载平衡器上使用类型标签,然后使用label_selector来匹配您的标签。
示例:
resource "hcloud_server" "node1" {
name = "node1"
image = "debian-9"
server_type = "cx11"
labels = {"env" : "dev"}
}
resource "hcloud_load_balancer" "load_balancer" {
name = "my-load-balancer"
load_balancer_type = "lb11"
location = var.instance_location
}
resource "hcloud_load_balancer_target" "load_balancer_target" {
type = "label_selector"
load_balancer_id = hcloud_load_balancer.load_balancer.id
label_selector = "env=dev"
}https://stackoverflow.com/questions/63203924
复制相似问题