Определения политик 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 или путь только к узлу параметра. Хотя вы могли бы добавить дополнительные шаги в свой конвейер для сегментирования «основного» файла, содержащего эту информацию, команда посчитала, что это более чистый путь — использовать каждый файл как часть исходного кода.

Другие вопросы по тегам