首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在带有Terraform的Hetzner中向LoadBalancer添加多个服务器?

如何在带有Terraform的Hetzner中向LoadBalancer添加多个服务器?
EN

Stack Overflow用户
提问于 2020-08-01 09:55:26
回答 2查看 726关注 0票数 2

目前正在尝试使用Terraformv0.12.28使新的Hetzner负载平衡器与多个服务器协同工作。提供的文档只显示一个服务器的情况,这对于负载均衡器来说是相当奇怪的:)

服务器是使用以下计数创建的:

代码语言:javascript
复制
 resource "hcloud_server" "web" {
  count       = var.instances
  name        = "web-server-${count.index}"
...
}

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

代码语言:javascript
复制
    target {
    type = "server"
    server_id = hcloud_server.web.id
  }

然而,在这里,任何类型的for或for_each似乎都不适用于添加所有创建的实例。

您能告诉我如何在负载均衡器中添加计数创建的服务器吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-01 10:13:21

我认为动态块可以在你的情况下使用。

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

代码语言:javascript
复制
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"]
    }   

  }

}
票数 0
EN

Stack Overflow用户

发布于 2020-08-19 10:49:19

我一直在尝试做同样的事情,最后我改变了目标的类型,从一个服务器到另一个标签。

在每个资源上,您可以设置一个标签,例如"env=dev“,然后在负载平衡器上使用类型标签,然后使用label_selector来匹配您的标签。

示例:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63203924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档