我正在使用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配置中添加另一个资源定义?
答案 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)))}
然后您可以应用该计划。