【问题标题】:Vertical Scaling with Terraform使用 Terraform 进行垂直缩放
【发布时间】:2018-10-07 21:28:18
【问题描述】:

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

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

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

(为简洁起见,排除了 SSH 密钥和供应商)

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

我可以通过将instance_size 增加到例如2gb 并执行terraform apply --parallelism 1 以便一次只更新一个资源来扩展所有这些资源。

我也可以使用terraform apply -target digitalocean_droplet.server[0] -var instance_size=2gb 仅定位其中一个资源。问题是这会导致意外的配置漂移,因为除了执行命令时我没有在其他任何地方声明更改。

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

【问题讨论】:

  • 版本控制你的代码,在你之前terraform apply
  • @BMW 这真的没有意义。如果我将 swarm_instance_size 更改为 2gb,我将缩放该资源的所有实例,而不仅仅是单个实例。所以版本控制并不能解决问题/问题

标签: cluster-computing digital-ocean terraform


【解决方案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)))}

然后您可以应用该计划。

【讨论】:

  • 有效。只是忘记了前导零:) 非常感谢!在任何地方都找不到这个
猜你喜欢
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
相关资源
最近更新 更多