Какой лучший способ обойти назначение политики Azure для применения тегов при запуске скрипта Terraform? - PullRequest
0 голосов
/ 12 февраля 2020

Недавно мы создали политику Azure, которая обязывает определенный набор тегов присутствовать на всех ресурсах. Эта политика блокирует развертывания, которые не содержат обязательные теги в развертывании. Однако некоторые тегируемые ресурсы, такие как Vnets, не имеют возможности добавлять теги во время развертывания, если вы не используете шаблон ARM. Похоже, что Terraform также пытается развернуть Vnet в качестве отдельного шага перед добавлением тегов, что приводит к сбою развернутых Terraform Vnets, даже если предоставлены правильные теги. С помощью Terraform, если предоставляется шаблон ARM, он обойдет эту проблему.

Как получить ресурсы развертывания Terraform, такие как Vnets, без использования шаблона ARM и без ограничения политики azure? В идеале я хотел бы иметь возможность исключить развертывания ресурсов, инициированных Terraform, из политики Azure, но я не могу найти способ отличить развертывания Terraform от обычных развертываний веб-портала Azure в политике Azure.

Некоторые другие идеи:

  • Используйте Terraform для создания временного тега в группе ресурсов, указывающего «Освободить эти ресурсы». Удалите этот тег после завершения сценария Terraform. Ссылка на этот тег в политике Azure и освобождение развертываний, если тег существует. Это решение в порядке, но я бы предпочел более элегантное
  • Использование Terraform, чтобы добавить группу ресурсов в качестве исключения к Политике во время выполнения, а затем вернуться после
  • Обновлять политику, чтобы она не требовалась Теги на ресурсах, которые не поддерживают тегирование при первоначальном развертывании без шаблонов ARM

Есть ли более элегантное решение, кроме упомянутых выше вариантов?

1 Ответ

0 голосов
/ 13 февраля 2020

Azure Политика не имеет никакого способа отличить способ выполнения операции ARM, она только видит результирующий набор свойств, которые будут применены к ресурсу.

Как насчет использования политика тегов группы ресурсов наследования (https://github.com/Azure/azure-policy/tree/master/samples/Tags/inherit-resourcegroup-tag)? Terraform может добавить тег в группу ресурсов, а затем развернуть vnet, после чего политика будет применять теги из группы ресурсов к vnet.

.
...