Terraform 如何在地形中引用map变量&书信电报;Azure>;
main.tf写道:Terraform 如何在地形中引用map变量&书信电报;Azure>;,terraform,Terraform,main.tf写道: terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 2.26" } } } provider "azurerm" { features {} } resource "azurerm_resource_group"
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 2.26"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
name = "Product-RG"
location = var.location
}
resource "azurerm_virtual_network" "vnet" {
resource_group_name = azurerm_resource_group.rg.name
name = "Product-VNet"
address_space = [lookup(var.vnetAddress, var.location)]
location = var.location
subnet {
name = "Web-Sub1"
address_prefix = ["${lookup(var.subnetAddress[var.location], "web1")}"]
}
subnet {
name = "Web-Sub2"
address_prefix = [lookup(var.subnetAddress[var.location], "web2")]
}
variable "location" {}
variable "vnetAddress" {
type = map
default = {
westus = "192.168.1.0/27"
eastus = "192.168.11.0/27"
}
}
variable "subnetAddress" {
type = map
default = {
westus = {
web1 = "192.168.1.0/27"
web2 = "192.168.1.32/27"
was1 = "192.168.1.64/27"
was2 = "192.168.1.96/27"
db1 = "192.168.1.128/27"
db2 = "192.168.1.160/27"
}
eastus = {
web1 = "192.168.11.0/27"
web2 = "192.168.11.32/27"
was1 = "192.168.11.64/27"
was2 = "192.168.11.96/27"
db1 = "192.168.11.128/27"
db2 = "192.168.11.160/27"
}
}
}
在Web-Sub1中,我最初使用了类似Web-Sub2的地址前缀,但在错误发生后,我现在尝试使用Web-Sub1上的地址前缀
出现如下错误。
错误:属性值类型不正确
在main.tf第27行的资源“azurerm_虚拟网络”vnet中:
27:address_prefix=[“${lookup(var.subnetAddress[var.location],“web1”)}”]
属性“地址前缀”的值不正确:需要字符串
错误:属性值类型不正确
在main.tf第31行的资源“azurerm_虚拟网络”vnet中:
31:address_prefix=[lookup(var.subnetAddress[var.location],“web2”)]
属性“地址前缀”的值不正确:需要字符串
变量。tf写入:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 2.26"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
name = "Product-RG"
location = var.location
}
resource "azurerm_virtual_network" "vnet" {
resource_group_name = azurerm_resource_group.rg.name
name = "Product-VNet"
address_space = [lookup(var.vnetAddress, var.location)]
location = var.location
subnet {
name = "Web-Sub1"
address_prefix = ["${lookup(var.subnetAddress[var.location], "web1")}"]
}
subnet {
name = "Web-Sub2"
address_prefix = [lookup(var.subnetAddress[var.location], "web2")]
}
variable "location" {}
variable "vnetAddress" {
type = map
default = {
westus = "192.168.1.0/27"
eastus = "192.168.11.0/27"
}
}
variable "subnetAddress" {
type = map
default = {
westus = {
web1 = "192.168.1.0/27"
web2 = "192.168.1.32/27"
was1 = "192.168.1.64/27"
was2 = "192.168.1.96/27"
db1 = "192.168.1.128/27"
db2 = "192.168.1.160/27"
}
eastus = {
web1 = "192.168.11.0/27"
web2 = "192.168.11.32/27"
was1 = "192.168.11.64/27"
was2 = "192.168.11.96/27"
db1 = "192.168.11.128/27"
db2 = "192.168.11.160/27"
}
}
}
我想知道为什么会有需要以字符串格式编写的错误,以及为什么我不能带来数据。您几乎做到了,只是
address\u prefix
参数需要是字符串,并且您正在传递字符串列表address\u prefix=[lookup(var.subnetAddress[var.location],“web2”)
这应该行得通
参考参考资料,address\u前缀
作为字符串而不是字符串列表传递