main.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")]
}
在Web-Sub1中,我最初像Web-Sub2一样带了address_prefix,但现在我在发生错误后在Web-Sub1上尝试像address_prefix。
发生如下错误。
错误:属性值类型不正确
在 main.tf 第 27 行的资源“azurerm_virtual_network”“vnet”中: 27: address_prefix = ["${lookup(var.subnetAddress[var.location], "web1")}"]
属性“address_prefix”的值不合适:需要字符串。
错误:属性值类型不正确
在 main.tf 第 31 行的资源“azurerm_virtual_network”“vnet”中: 31: address_prefix = [查找(var.subnetAddress[var.location], "web2")]
属性“address_prefix”的值不合适:需要字符串。
variable.tf 写道:
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_prefix
参数需要是一个字符串,你正在传递一个字符串列表 address_prefix = [lookup(var.subnetAddress[var.location], "web2")]
subnet {
name = "Web-Sub1"
address_prefix = lookup(var.subnetAddress[var.location], "web1")
}
subnet {
name = "Web-Sub2"
address_prefix = lookup(var.subnetAddress[var.location], "web2")
}
这应该有效。
引用azurerm_virtual_network资源,address_prefix
作为字符串而不是字符串列表传递。
关于terraform - 如何在地形中引用 map 变量? <蔚蓝>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64945665/