#for-loop #terraform #output
Вопрос:
Я использую следующий код для создания вывода карты из модуля, который создает виртуальные машины Azure с помощью цикла for_each.
output "vm_ids" {
description = "Virtual machine IDs"
value = tomap({
for k, server in azurerm_windows_virtual_machine.vm : k => server.id
})
}
Я не могу понять, как правильно ссылаться на отдельные записи на карте. Если я выведу всю карту module.vm_ADDS01.vm_ids
(vm_ADDS01-идентификатор модуля), я получу следующее.
testvmid = {
"app_01" = (known after apply)
"app_02" = (known after apply)
}
Я попробовал следующие варианты, предоставляя ключ одной из записей,
module.vm_ADDS01.vm_ids[app_01]
module.vm_ADDS01.vm_ids[app_01].id
module.vm_ADDS01[app_01].vm_ids
Я получаю следующую ошибку.
За ссылкой на тип ресурса должен следовать по крайней мере один доступ к атрибуту с указанием имени ресурса.
Комментарии:
1. Что такое
testvmid
? Откуда это берется?2. Похоже, что это может быть опечатка, не обозначающая
app_01
строку с"
синтаксисом. Попробуйте это и посмотрите, исправит ли это вашу проблему.3. Marcin testvmid был всего лишь временным выходом, который я настроил в своем корневом коде для проверки ссылки на один из выходов модуля. @MattSchuchard Спасибо, что это была проблема, поэтому рабочий код-module.vm_ADDS01.vm_ids[«app_01»]
Ответ №1:
Спасибо Мэтту за то, что указал на пропущенные цитаты. Ключ карты должен быть указан в кавычках, поэтому рабочий пример таков.
module.vm_ADDS01.vm_ids["app_01"]