Я пытался импортировать существующее приложение-функцию в свою конфигурацию terraform. План terraform показывает, что существующее приложение-функция имеет так называемые скрытые ссылки, а именно три скрытые ссылки, связанные с информацией о приложении:
"hidden-link: /app-insights-conn-string" = "InstrumentationKey=********;IngestionEndpoint=********/"
"hidden-link: /app-insights-instrumentation-key" = "********"
"hidden-link: /app-insights-resource-id" = "/subscriptions/********/resourceGroups/*******/providers/microsoft.insights/components/*******"
Я пытаюсь понять это, поскольку когда я создаю приложение-функцию с нуля, используя ту же конфигурацию terraform, у него нет скрытых ссылок, я могу просто настроить информацию о приложении, передав «application_insights_connection_string» в конфигурацию, и это работает. Но похоже, что для созданного вручную на портале Azure каким-то образом добавила эти ссылки в фоновом режиме и теперь хочет, чтобы terraform их импортировал.
Я прочитал, что мне следует сохранить эти скрытые ссылки, импортированные в мою конфигурацию, согласно этой теме обсуждения здесь — https://github.com/hashicorp/terraform-provider-azurerm/issues/16569
Мне нужно мнение экспертов относительно того, какое решение является идеальным?
Должен ли я их импортировать, и в этом случае в конфигурации теперь будет новый раздел скрытых ссылок, и он будет создан для любого другого нового приложения-функции из этой конфигурации?
Должен ли я поместить их в блок игнорирования изменений в жизненном цикле? импорт затем игнорирует их, но я не знаю, хорошо ли это.
жизненный цикл { ignore_changes = [ теги["скрытая ссылка: /app-insights-instrumentation-key"], теги["скрытая ссылка: /app-insights-resource-id"], теги["скрытая ссылка: /app-insights-conn-string"] ] }
Любые идеи приветствуются, и если кто-то еще сталкивался с этим, пожалуйста, дайте мне знать.
Обычно я бы рекомендовал изучить проверенные модули Azure, прежде чем создавать все с нуля. Может сэкономить вам много времени и головной боли ;-) https://azure.github.io/Azure-Verified-Modules/
https://github.com/Azure/terraform-azurerm-avm-res-web-site
Тег скрытой ссылки используется для связи информации о приложении с вашей функцией. Оба упомянутых вами варианта полностью действительны: либо добавьте тег в файл TF.
Что-то вроде:
tags = merge(var.tags,{"hidden-link:${azurerm_application_insights.myAppInsights.id}":"Resource"})
Или отключить изменения жизненного цикла
lifecycle {
ignore_changes = [tags]
}
Это означает, что TF будет игнорировать изменения в TAGS. Поэтому, когда Azure создает их, вы не удаляете их снова.
Эй, спасибо за ответ. Итак, в случае игнорирования, означает ли это, что terraform больше не управляет этими скрытыми ссылками? для создания будущего приложения-функции, позаботится ли Azure об этом в серверной части?