有没有办法在Terraform中命令销毁和创建?

时间:2019-07-11 13:29:59

标签: terraform

我正在尝试在Terraform的vCenter上使用三个不同的VM资源创建基础结构,每个资源都有其自身的冗余副本作为辅助资源。在更改基础架构时,我不想停机。但是,Terraform只会在应用开始时破坏所有内容。我还需要按一定顺序为Chef提供VM。我如何才能使它销毁VM,重新创建,销毁另一个VM,重新创建VM,等等?换句话说,执行滚动部署。

我最初为每个VM设置count = 2来生成主要和辅助VM,但是我无法以此方式命令创建,因此我将它们拆分了。我尝试使用create_before_destroy,但是vCenter不允许两个具有相同名称的VM。我也尝试使用depends_on。这可以命令创建VM,但是仍然会立即破坏整个基础架构。

resource "vsphere_virtual_machine" "vm1_prim" {
  ...
}

resource "vsphere_virtual_machine" "vm1_sec" {
  depends_on = [vsphere_virtual_machine.vm1_prim]
  ...
}

resource "vsphere_virtual_machine" "vm2_prim" {
  depends_on = [vsphere_virtual_machine.vm1.sec]
  ...
}

resource "vsphere_virtual_machine" "vm2_sec" {
  depends_on = [vsphere_virtual_machine.vm2_prim]
  ...
}

resource "vsphere_virtual_machine" "vm3_prim" {
  ...
}

resource "vsphere_virtual_machine" "vm3_sec" {
  depends_on = [vsphere_virtual_machine.vm3_prim]
  ...
}

我想执行以下操作可能会奏效,但似乎不像“ Terraform”那样:

terraform apply --auto-approve -target=vsphere_virtual_machine.vm1_prim -target=vsphere_virtual_machine.vm3_prim
terraform apply --auto-approve -target=vsphere_virtual_machine.vm1_sec -target=vsphere_virtual_machine.vm2_prim -target=vsphere_virtual_machine.vm3_sec
terraform apply --auto-approve -target=vsphere_virtual_machine.vm2_sec

我希望Terraform按此顺序工作:

  • 销毁vm1_prim和vm3_prim
  • 创建vm1_prim和vm3_prim
  • 销毁vm1_sec和vm3_sec
  • 创建vm1_sec和vm3_sec
  • 销毁vm2_prim
  • 创建vm2_prim
  • 销毁vm2_sec
  • 创建vm2_sec

相反,它执行以下操作:

  • 销毁vm2_sec和vm3_sec
  • 销毁vm2_prim和vm3_prim
  • 销毁vm1_sec
  • 破坏vm1_prim
  • 创建vm1_prim和vm3_prim
  • 创建vm1_sec和vm3_sec
  • 创建vm2_prim
  • 创建vm2_sec

0 个答案:

没有答案