【问题标题】:Terraform compatability error - count.index not being usedTerraform 兼容性错误 - 未使用 count.index
【发布时间】:2020-01-16 01:38:06
【问题描述】:

我使用的是 0.12 Terraform,脚本是用 0.11 Terraform 编写的。

代码块是:

resource "azurerm_virtual_machine" "name_av_set" {
  count               = "${var.node_count}"
  #count               = "$length(var.node_count)"
  name                = "${var.resource_name_prefix}-pool-${var.name}-${format("%03d", count.index + 1)}-vm"

  availability_set_id = "${azurerm_availability_set.name_av_set.id}"

尝试运行 Terraform 脚本时,出现错误

错误:

Error: Missing resource instance key

  on main.tf, in resource "azurerm_virtual_machine" 
  58:   availability_set_id = "${azurerm_availability_set.name_av_set.id}"

Because azurerm_availability_set.name_av_set has "count" set, its
attributes must be accessed on specific instances.

For example, to correlate with indices of a referring resource, use:
    azurerm_availability_set.name_av_set[count.index]

如何改掉这个错误?

【问题讨论】:

  • 0.11 Terraform 也会引发此错误。

标签: terraform terraform-provider-azure


【解决方案1】:

因为您使用计数定义了资源 azurerm_availability_set.name_av_set,所以它现在被视为对象列表。 所以你不能在 azurerm_virtual_machine.name_av_set 中设置 azurerm_availability_set.name_av_set.id 它需要是 azurerm_availability_set.name_av_set.0.id 或索引。

【讨论】:

    【解决方案2】:

    按照错误消息中的建议,您可以将[count.index] 部分添加到您的参考中,只要这两个资源都有count = var.node_count

      availability_set_id = azurerm_availability_set.name_av_set[count.index].id
    

    如果您关注the documented upgrade process,那么terraform 0.12upgrade 工具可以自动处理这种重写。在这种情况下,升级工具会选择不同的解决方案,因为它是更保守的选择:

      availability_set_id = azurerm_availability_set.name_av_set[0].id
    

    硬编码索引 0 更适合您表达式的 Terraform 0.11 行为,因为在 Terraform 0.11 中,azurerm_availability_set.name_av_set.id 意味着采用 azurerm_availability_set.name_av_set 的第一个实例的 id

    选择哪一个取决于您是打算始终选择第一个可用性集,还是要将每个虚拟机与不同的可用性集相关联。

    【讨论】:

    • 这个答案应该得到更多的关注,你解决了我一直在努力解决的问题,谢谢!
    猜你喜欢
    • 2018-10-22
    • 1970-01-01
    • 2021-08-06
    • 2018-10-15
    • 2019-01-23
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多