我希望使用基础设施即代码创建一些 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 字符串或仅参数节点的路径。虽然您可以在管道中添加额外的步骤来分片包含此信息的“核心”文件,但团队认为将每个文件用作源的一部分是一种更清晰的路径。