Ссылка на вывод карты терраформирования

#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"]