Сообщения в блоге, на которые вы ссылаетесь, были предварительными версиями предстоящих функций, которые еще не завершены, поэтому они не являются лучшим справочным материалом для конечной функциональности, которая была поставлена. Вместо этого обратитесь к официальной документации для ресурса for_each
.
В документации приведен пример объявления количества azurerm_resource_group
экземпляров ресурса на основе карты. Мы можем адаптировать этот пример для работы с var.environments
, используя один блок ресурсов, описывающий подсети «app», и отдельный блок ресурсов, описывающий подсети «db»:
resource "aws_subnet" "app" {
for_each = var.environments
vpc_id = var.vpc_id
cidr_block = each.value.app_subnet_cidr
tags = {
Name = "${each.key}-app"
}
}
resource "aws_subnet" "db" {
for_each = var.environments
vpc_id = var.vpc_id
cidr_block = each.value.db_subnet_cidr
tags = {
Name = "${each.key}-db"
}
}
I ' Я точно не знаю, как ваш второй вопрос относится к первому, но вот как объявить переменную networks
, чтобы она принимала значение, подобное тому, которое вы показали во втором примере.
variable "networks" {
type = map(object({
network_number = number
availability_zone = string
}))
}
Если Вы хотите узнать больше об этом втором примере, я бы предложил начать новый отдельный вопрос о переполнении стека об этом. Соглашение о переполнении стека состоит в том, чтобы иметь отдельный вопрос для каждой темы c, а не задавать несколько вопросов одновременно.