垂直缩放与Terraform

时间:2018-04-27 05:02:44

标签: cluster-computing digital-ocean terraform

我正在使用terraform来设置VPS群集。

这已经很好了。我定义了一个名为variable的{​​{1}},默认设置为instance_size。我使用1gb定义中的count参数设置了几个具有完全相同配置的VPS:

resource

(为简洁而排除的SSH密钥和供应商)

我的问题是如何最好地垂直扩展这些资源中的一个。

我可以在不停机的情况下扩展所有这些内容,方法是将variable "swarm_instance_size" { default = "1gb" } resource "digitalocean_droplet" "server" { image = "123456" size = "${var.instance_size}" count = "3" name = "${format("server-%02d", (count.index + 1))}" region = "sfc1" } 增加到instance_size并执行2gb,以便一次只更新一个资源。

我也可以使用terraform apply --parallelism 1仅针对这些资源中的一个。问题是这会导致意外的配置偏差,因为我还没有在执行命令时声明改变其他任何地方。

将每个服务器声明为省略count参数的单一资源是唯一且最好的方法吗?而且,如果我想添加一个新服务器而不是增加count参数,我只需在我的terraform配置中添加另一个资源定义?

1 个答案:

答案 0 :(得分:1)

使用map

例如(这在你的variables.tf文件中):

variable "machines" {
  description = "description here"
  type = "map"
  default = {
    "server-01" = 1gb
    "server-02" = 1gb
    "server-03" = 2gb
  }
}

然后在您的实际代码中:

size = ${lookup(var.machines, format("server-%02d", (count.index + 1)))}

然后您可以应用该计划。