Terraform 地形虚拟机名称前缀自动增量修改

Terraform 地形虚拟机名称前缀自动增量修改,terraform,Terraform,我一直在努力寻找谷歌上有用的东西,所以我来了 我们目前正在部署2个新的虚拟机 我们正在使用 在地形TFVAR中,我们有以下两个属性: vm_count = "2" vm_name_prefix = "something000" 现在,在运行干运行后,Terraform将命名VM name: something0000 name: something0001 但我们希望VM的名称从1开始,然后从1开始计算 name: something0001 name: someth

我一直在努力寻找谷歌上有用的东西,所以我来了

我们目前正在部署2个新的虚拟机

我们正在使用

在地形TFVAR中,我们有以下两个属性:

vm_count = "2"
vm_name_prefix = "something000"
现在,在运行干运行后,Terraform将命名VM

name:    something0000
name:    something0001
但我们希望VM的名称从1开始,然后从1开始计算

name:    something0001
name:    something0002
有没有办法从Terraform获得这种行为

我似乎找到了定义这种行为的代码: vsphere\u virutal\u machine\u linux.tf

resource "vsphere_virtual_machine" "virtual_machine_linux" {
  count            = "${var.template_os_family == "linux" ? var.vm_count : 0}"
  name             = "${var.vm_name_prefix}${count.index}"
  resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
  datastore_id     = "${data.vsphere_datastore.ds.id}"

  num_cpus = "${var.num_cpus}"
  memory   = "${var.memory}"
  guest_id = "${data.vsphere_virtual_machine.template.guest_id}"

  wait_for_guest_net_timeout = "${var.wait_for_guest_net_timeout}"

  network_interface {
    network_id = "${data.vsphere_network.network.id}"
}

我们可以在不下载和修改git repo的情况下覆盖这个定义吗?

即使您的共享TF代码似乎不是HCL,我认为解决问题的方法是使用一个起始值为1的外部变量,并在每个迭代步骤中递增它

name_index = [1, 2, 3, 4]

resource "example" "name" {
  count = 4
  name = "${var.name_index[count.index]}"
}

即使您的共享TF代码似乎不是HCL,我认为您的问题的解决方案是使用一个起始值为1的外部变量,并在每个迭代步骤中递增它

name_index = [1, 2, 3, 4]

resource "example" "name" {
  count = 4
  name = "${var.name_index[count.index]}"
}
可能就是你要找的。你所需要的只是一个简单的+1

可能就是你要找的。你所需要的只是一个简单的+1

While’s解决了Terraform和所有优秀编程语言一样使用0索引的问题,而人类是1的忠实粉丝,用前导0索引静态前缀是毫无意义的

如果你有9台机器,你会有从0001到0009的名字。但是在第十台机器上,你会得到00010。请注意,前导零的数量仍然相同

相反,您可以使用Terraform允许printf样式格式的事实:

name = "${var.vm_name_prefix}${format("%0000d", count.index + 1)}"
这意味着,如果你有9台机器,你将有名称something0001到something0009。但是在第10台机器上,你会得到0010,而在第9999台机器上,你会得到9999。

While’s解决了一个事实,即Terraform和所有优秀的编程语言一样,使用0索引,而人类是1的忠实粉丝,用前导0索引静态前缀是毫无意义的

如果你有9台机器,你会有从0001到0009的名字。但是在第十台机器上,你会得到00010。请注意,前导零的数量仍然相同

相反,您可以使用Terraform允许printf样式格式的事实:

name = "${var.vm_name_prefix}${format("%0000d", count.index + 1)}"

这意味着,如果你有9台机器,你将有名称something0001到something0009。但是,在第10台机器上,您将得到一些0010,而在第9999台机器上,您将得到一些9999。

您能否共享实际创建虚拟机的代码以及名称?您能否共享实际创建虚拟机以及名称的代码?