#terraform
#terraform
Вопрос:
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 я изначально ввел address_prefix, как в Web-Sub2, но теперь я пытаюсь использовать address_prefix в Web-Sub1 после возникновения ошибки.
Произошла ошибка, как показано ниже.
Ошибка: неверный тип значения атрибута
на 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»: требуется строка.
переменная.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"
}
}
}
Интересно, почему возникает ошибка, которую необходимо записать в строковом формате, и почему я не могу привести данные.
Ответ №1:
Вы почти на месте, просто этот 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")
}
Это должно сработать.
Ссылка на ресурс address_prefix
azurerm_virtual_network передается в виде строки, а не списка строк.