【问题标题】:Change VM size after provisioning配置后更改 VM 大小
【发布时间】:2018-08-25 14:13:39
【问题描述】:

如何在配置虚拟机后从terraform 脚本缩小其大小?有没有办法在不修改初始.tf 文件的情况下更新资源?

【问题讨论】:

  • 我没有 terraform 的经验,但这很容易在 Azure 门户中完成。您可以访问那里的 VM 并选择新的大小。这将在重新启动时导致中断。有关幕后发生的事情的更多技术信息,请参阅azure.microsoft.com/en-gb/blog/resize-virtual-machines
  • 我想使用terraform,而不是手动操作。
  • 所以你想使用 Terraform 来改变一些东西但不更新你的 Terraform 配置?
  • 使用触发器或使用另一个terraform文件,但不修改初始脚本。
  • 您可以将资源导入回 terraform。但 Terraform 的理念是,它是您资源的真实来源。您想要进行更改但不更改 tf 文件,这有点违反了规定

标签: azure virtual-machine terraform


【解决方案1】:

我有一个解决方案,也许你可以试试。

1.复制您的 tf 文件,例如 cp vm.tf vm_back.tf 并将 vm.tf 移动到另一个目录。

2.在vm_back.tf中修改vm_size。我用的是这个tf file,所以我用下面的命令来改变值。

sed  -i 's/vm_size               = "Standard_DS1_v2"/vm_size               = "Standard_DS2_v2"/g' vm_back.tf

3.通过执行terraform apply更新VM大小。

4.删除vm_back.tf和mv vm.tf到原目录。

【讨论】:

  • 其实我更建议你用Azure CLi 2.0来做这个,你可以用az vm resize,看这个link
  • 我想出了这个解决方案,但我在这里和那里寻找更多terraform 方式。可能有什么东西可以在terraform之上使用。
  • @Francois 是的,我也这么认为。 Terraform 无法做到这一点。
【解决方案2】:

传入一个在条件变量中使用的命令行参数怎么样?

例如,在您的 .tf 文件中声明一个条件值:

vm_size = "${var.vm_size == "small" ? var.small_vm : var.large_vm}"

当您想要配置小型 VM 时,您只需在命令行中传递 vm_size 变量即可:

$ terraform apply -var="vm_size=small"

【讨论】:

    猜你喜欢
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多