Azure 策略定义即代码:避免重复的参数定义

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.parameters.json这是有道理的,但我见过的所有策略定义示例都包含参数定义;所以如果它只是重​​复信息,我看不出拥有单独文件的价值。

问题

有没有办法避免这种重复;例如让文件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 assignment create 使用 params(或 p)参数,该参数需要 JSON 字符串或仅参数节点的路径。虽然您可以在管道中添加额外的步骤来分片包含此信息的“核心”文件,但团队认为将每个文件用作源的一部分是一种更清晰的路径。

相关内容