【问题标题】:How to add multiple servers to a LoadBalancer in Hetzner Cloud with Terraform?如何使用 Terraform 将多个服务器添加到 Hetzner Cloud 中的 LoadBalancer?
【发布时间】:2020-08-19 18:49:19
【问题描述】:

目前正在尝试使用 Terraform v0.12.28 让新的 Hetzner Load Balancer 与多个服务器一起工作。 如果documentation 只显示一个服务器的情况,这对于负载均衡器来说是很奇怪的:)

使用 count 创建服务器,如下所示:

 resource "hcloud_server" "web" {
  count       = var.instances
  name        = "web-server-${count.index}"
...
}

要将服务器添加到负载平衡器,应使用如下模式:

    target {
    type = "server"
    server_id = hcloud_server.web.id
  }

然而,任何类型的 forfor_each 似乎都不适用于添加所有创建的实例。

您能否告诉我如何将计数创建的服务器添加到负载平衡器的方向?

谢谢!

【问题讨论】:

    标签: loops cloud terraform


    【解决方案1】:

    我一直在尝试做同样的事情,最终我将目标的类型从服务器更改为标签。

    您可以在每个资源上设置标签,例如“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"
    }
    

    【讨论】:

      【解决方案2】:

      我认为dynamic blocks 可以用于您的情况。

      您可以执行类似于以下的操作(动态块是 target;文档中的示例,因此可能需要调整您的真实代码):

      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"]
          }   
      
        }
      
      }
      

      【讨论】:

      • @YevhenOrestov 对不起,我想应该是server_id = target.value["id"]。我更新了答案。这是一个示例,您必须将其修改为您自己的代码。
      猜你喜欢
      • 2023-03-03
      • 2020-06-23
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 2021-09-07
      • 2016-04-05
      相关资源
      最近更新 更多