Определения политик Azure в виде кода: избежание дублирования определений параметров
Я хочу создать несколько политик Azure, используя инфраструктуру в качестве кода.
В документации MS предлагается структура, показанная ниже:
.
|
|- policies/ ________________________ # Root folder for policy resources
| |- policy1/ ______________________ # Subfolder for a policy
| |- policy.json _________________ # Policy definition
| |- policy.parameters.json ______ # Policy definition of parameters
| |- policy.rules.json ___________ # Policy rule
| |- assign.<name1>.json _________ # Assignment 1 for this policy definition
| |- assign.<name2>.json _________ # Assignment 2 for this policy definition
| |- policy2/ ______________________ # Subfolder for a policy
| |- policy.json _________________ # Policy definition
| |- policy.parameters.json ______ # Policy definition of parameters
| |- policy.rules.json ___________ # Policy rule
| |- assign.<name1>.json _________ # Assignment 1 for this policy definition
| |- assign.<name2>.json _________ # Assignment 2 for this policy definition
|
Это имеет смысл, но все примеры определений политик, которые я видел, включают определения параметров; поэтому я не вижу смысла в отдельном файле, если он просто дублирует информацию.
Вопрос
Есть ли способ избежать этого дублирования; например, имеяpolicy.json
файл обратитесь кpolicy.parameters.json
файл вместо копирования его содержимого, или это дублирование добавляет какую-то ценность?
(Тот же сценарий происходит и с файлом правил; я предполагаю, что ответ для этого раздела будет таким же...)
Пример такого дублирования
Из репозитория политик сообщества Azure:
Файл политики включает в себя следующие строки:
"parameters": {
"tagName": {
"type": "String",
"defaultValue": "DateCreated",
"metadata": {
"displayName": "Tag Name",
"description": "Name of the tag, such as 'Date'"
}
}
}
Файл параметров точно дублирует содержимое, найденное в приведенном выше разделе параметров (ну почти; в этом случае описание немного отличается, но это похоже на ошибку, а не на оправдание):
{
"tagName": {
"type": "String",
"defaultValue": "DateCreated",
"metadata": {
"displayName": "Tag Name",
"description": "Name of the tag, such as 'DateCreated'"
}
}
}
1 ответ
Ответ от команды MS Docs :
Структура частично помогает с некоторыми функциями SDK, которые принимают эти компоненты как отдельный файл. Например, в Azure CLI команда создания назначения политики az policy присваивания create использует параметр params (или p), который ожидает строку JSON или путь только к узлу параметра. Хотя вы могли бы добавить дополнительные шаги в свой конвейер для сегментирования «основного» файла, содержащего эту информацию, команда посчитала, что это более чистый путь — использовать каждый файл как часть исходного кода.