【问题标题】:Variable in terraform resource referanceterraform 资源参考中的变量
【发布时间】:2018-01-17 00:50:18
【问题描述】:

我正在尝试在 terraform 中创建一个资源,它将基于列表变量创建多个子网。

我在引用现有资源时遇到问题。例如,在以下代码中 network_security_group_id 被硬编码为 azurerm_network_security_group.k8s.id:

variable "resources_large" {
    description = "List of Large Networks" 
    default = [
      "k8s",
      "storm"
    ]
}

resource "azurerm_subnet" "large" {
  name                      = "ue-${var.environment}-${var.resources_large[count.index]}-subnet-${replace("${cidrsubnet("${local.subnet_ranges["large"]}", "${var.newbit_size["large"] }", count.index )}", "/[./]/", "-"  ) }"
  resource_group_name       = "ue-${var.environment}-${var.resources_large[count.index]}-rg"
  virtual_network_name      = "${azurerm_virtual_network.dev.name}"
  address_prefix            = "${cidrsubnet("${local.subnet_ranges["large"]}", "${var.newbit_size["large"] }", count.index )}"
  network_security_group_id = "${azurerm_network_security_group.k8s.id}"

  count  = "${length(var.resources_large)}"

  depends_on = ["azurerm_virtual_network.dev"]
}

这需要根据resources_large 列表中的名称引用现有的安全组。 我想要的是看起来像这样的东西:

network_security_group_id = "${azurerm_network_security_group.${var.resources_large[count.index]}.id}"

这不起作用,我猜是由于缺乏变量插值支持。

有没有办法根据变量引用其他资源?

【问题讨论】:

    标签: azure terraform terraform-provider-azure


    【解决方案1】:

    可能是这样的

    locals {
      sgs = {
        k8s = "${azurerm_network_security_group.k8s.id}"
        storm = "${azurerm_network_security_group.storm.id}"
      }
    }
    

    ...

    network_security_group_id = "${lookup( locals.sgs, var.resources_large[count.index])}"
    

    可能会起作用。

    如果您使用相同的计数器创建 SG,它可以只是

    network_security_group_id = "${element(azurerm_network_security_group.*.id, count.index)}"
    

    HTH

    【讨论】:

    • 除非他们没有在循环中创建他们的网络安全组,所以这不起作用。
    • 只是指出,我们实际上将在循环中创建安全组,只是还没有到那部分。我将测试上述内容。
    • 我再次编辑以保存最初的答案,以防有人需要它
    猜你喜欢
    • 2017-09-17
    • 2022-09-22
    • 2022-10-13
    • 1970-01-01
    • 2018-08-01
    • 2022-01-13
    • 1970-01-01
    • 2019-11-20
    • 2022-06-22
    相关资源
    最近更新 更多