Patrón de Azure Policy: agrupación de definiciones de directiva
Una iniciativa es un grupo de definiciones de directiva. Al agrupar definiciones de directiva relacionadas en un único objeto, puede crear una única asignación que habría representado varias asignaciones.
Definición de iniciativa de ejemplo
Esta iniciativa implementa dos definiciones de directiva, cada una de las cuales toma los parámetros tagName y tagValue. La propia iniciativa tiene dos parámetros: costCenterValue y productNameValue. Se proporciona cada uno de estos parámetros de iniciativa a cada una de las definiciones de directiva agrupadas. Este diseño maximiza la reutilización de las definiciones de directiva existentes, a la vez que limita el número de asignaciones necesarias creadas para implementarlas.
{
"properties": {
"displayName": "Billing Tags Policy Initiative",
"description": "Specify cost Center tag and product name tag",
"parameters": {
"costCenterValue": {
"type": "String",
"metadata": {
"displayName": "required value for Cost Center tag"
}
},
"productNameValue": {
"type": "String",
"metadata": {
"displayName": "required value for product Name tag"
}
}
},
"policyDefinitions": [{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"parameters": {
"tagName": {
"value": "productName"
},
"tagValue": {
"value": "[parameters('productNameValue')]"
}
}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "productName"
},
"tagValue": {
"value": "[parameters('productNameValue')]"
}
}
}
]
}
}
Explicación
Parámetros de iniciativa
Una iniciativa puede definir sus propios parámetros que luego se pasan a las definiciones de directiva agrupadas. En este ejemplo, costCenterValue y productNameValue se definen como parámetros de iniciativa. Los valores se proporcionan cuando se asigna la iniciativa.
"parameters": {
"costCenterValue": {
"type": "String",
"metadata": {
"displayName": "required value for Cost Center tag"
}
},
"productNameValue": {
"type": "String",
"metadata": {
"displayName": "required value for product Name tag"
}
}
},
Definiciones de directiva incluidas
Cada definición de directiva incluida debe proporcionar el valor de policyDefinitionId y una matriz parameters si la definición de directiva acepta parámetros. En el siguiente fragmento de código, la definición de directiva incluida usa dos parámetros: tagName y tagValue. tagName se define con un literal, pero tagValue usa el parámetro costCenterValue definido por la iniciativa. Este paso de los valores mejora la reutilización.
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
Pasos siguientes
- Consulte otros patrones y definiciones integradas.
- Revise la estructura de definición de Azure Policy.
- Vea la Descripción de los efectos de directivas.