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'" } } }
MS Docs 團隊的回答:
該結構部分是為了幫助一些將這些組件作為獨立文件的 SDK 功能。例如,在 Azure CLI 中,用於創建策略分配的命令 az policy assignment create 使用 params(或 p)參數,該參數需要 JSON 字元串或僅參數節點的路徑。雖然您可以在管道中添加額外的步驟來對包含此資訊的“核心”文件進行分片,但團隊認為將每個文件用作源的一部分是一種更簡潔的路徑。