リスト変数に基づいて多数のサブネットを作成するリソースをテラフォームで作成しようとしています。
既存のリソースへの参照に問題があります。たとえば、次のコードでは、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}"
これは機能しません。変数補間のサポートがないためだと思います。
変数に基づいて他のリソースを参照する方法はありますか?