Мы можем получить более полное представление о том, с чем мы имеем дело, чтобы добавить вывод для целей тестирования, например:
output "imagedata" {
value = data.azurerm_shared_image.image
}
Мы получаем важную информацию:
imagedata = {
"description" = ""
"eula" = ""
"gallery_name" = [removed]
"id" = [removed]
"identifier" = [
{
"offer" = "cis-centos-7-l1"
"publisher" = "center-for-internet-security-inc"
"sku" = "cis-centos75-l1"
},
]
"location" = [removed]
"name" = [removed]
"os_type" = "Linux"
"privacy_statement_uri" = ""
"release_note_uri" = ""
"resource_group_name" = [removed]
"tags" = {}
}
Ах, теперь использование data.azurerm_shared_image.image.identifier.sku
здесь тоже не сработает. Что касается Terraform, блок идентификатора содержит только один элемент в массиве.
Решение:
Мы извлекаем данные все так же:
data "azurerm_shared_image" "image" {
name = var.image_name
gallery_name = var.gallery_name
resource_group_name = var.rsg_name
}
И мы ссылаемся на них в нашем ресурсе virtual_machine, например:
storage_image_reference {
id = data.azurerm_shared_image.image.id
}
plan {
name = data.azurerm_shared_image.image.identifier[0].sku
publisher = data.azurerm_shared_image.image.identifier[0].publisher
product = data.azurerm_shared_image.image.identifier[0].offer
}