【问题标题】:Terraform vm_name_prefix auto increment modificationTerraform vm_name_prefix 自动增量修改
【发布时间】:2019-04-04 19:53:24
【问题描述】:

我一直在努力在谷歌上找到任何有用的东西,所以我在这里。

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

我们正在使用https://github.com/vancluever/terraform-vsphere-virtual-machine

在 Terraform tfvars 中,我们有这两个属性:

vm_count = "2"
vm_name_prefix = "something000"

现在在运行试运行之后,Terraform 将命名虚拟机

name:    something0000
name:    something0001

但我们希望虚拟机的名称以“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 吗?

【问题讨论】:

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

标签: terraform


【解决方案1】:

This 可能是您正在寻找的。您只需要一个简单的+ 1

name = "${var.vm_name_prefix}${count.index + 1}"

【讨论】:

    【解决方案2】:

    虽然SteveGoobanswer 解决了这样一个事实,即 Terraform(像所有优秀的编程语言一样)使用 0 索引,而人类是 1 的忠实拥护者,用前导 0 索引静态前缀是荒谬的。

    如果您有 9 台机器,您的名称将从 something0001something0009。但是在第 10 台机器上,您最终会得到something00010。请注意,您仍然有相同数量的前导零。

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

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

    这意味着,如果您有 9 台机器,您将拥有从 something0001something0009 的名称。但在第 10 台机器上,您最终会得到 something0010,而在第 9999 台机器上,它将是 something9999

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-11-01
        • 2013-07-28
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        • 2015-09-30
        • 2011-12-02
        • 2021-03-03
        相关资源
        最近更新 更多