我一直在努力在谷歌上找到任何有用的东西,所以我在这里
我们目前正在部署2个新的虚拟机。
我们使用的是https://github.com/vancluever/terraform-vsphere-virtual-machine
在Terraform tfvars中,我们有这两个属性:
vm_count = "2"
vm_name_prefix = "something000"现在,在运行试运行之后,Terraform将命名虚拟机
name: something0000
name: something0001但我们希望VM的名称以"1“开头,并从那里开始计数。
name: something0001
name: something0002有没有办法从Terraform中获得这种行为?
我似乎已经找到了定义这种行为的代码:(vsphere_virutal_machine_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的情况下覆盖这个定义吗?
发布于 2019-04-04 16:50:33
This可能就是您要找的东西。您所需要的只是一个简单的+ 1
name = "${var.vm_name_prefix}${count.index + 1}"发布于 2019-04-04 19:53:24
虽然SteveGoob的answer解决了这样一个问题,即Terraform (像所有优秀的编程语言一样)使用0索引,而人类是1的铁杆粉丝,使用前导0来索引静态前缀是毫无意义的。
如果你有9台机器,你的名字会从something0001一直到something0009。但是在第10台机器上,你最终会得到something00010。请注意,您仍然有相同数量的前导零。
相反,您可以使用Terraform允许printf样式格式化的事实:
name = "${var.vm_name_prefix}${format("%0000d", count.index + 1)}"这意味着如果您有9台计算机,您将拥有从something0001到something0009的名称。但是在第10台机器上,您最终将使用something0010,而在第9999台机器上,它将是something9999。
发布于 2019-04-04 15:37:20
尽管您共享的TF代码似乎不是HCL,但我认为您的问题的解决方案是拥有一个起始值为1的外部变量,并在每个迭代步骤中递增它。
name_index = [1, 2, 3, 4]
resource "example" "name" {
count = 4
name = "${var.name_index[count.index]}"
}https://stackoverflow.com/questions/55509786
复制相似问题