Azure

Azure 策略定義即程式碼:避免重複的參數定義

  • April 23, 2021

我正在尋找使用基礎架構即程式碼創建許多 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 字元串或僅參數節點的路徑。雖然您可以在管道中添加額外的步驟來對包含此資訊的“核心”文件進行分片,但團隊認為將每個文件用作源的一部分是一種更簡潔的路徑。

引用自:https://serverfault.com/questions/1061083