Azure Policy minta: erőforrások üzembe helyezése
A deployIfNotExists effektus lehetővé teszi egy Azure Resource Manager-sablon (ARM-sablon) üzembe helyezését egy nem megfelelő erőforrás létrehozásakor vagy frissítésekor. Ez a megközelítés előnyben részesíthető a megtagadási effektussal, mivel lehetővé teszi az erőforrások létrehozását, de biztosítja, hogy a módosítások megfelelőek legyenek.
Mintaszabályzat-definíció
Ez a szabályzatdefiníció a mező operátorral értékeli ki a type
létrehozott vagy frissített erőforrást. Ha az erőforrás Microsoft.Network/virtualNetworks, a szabályzat egy network watchert keres az új vagy frissített erőforrás helyén. Ha nem található egyező network watcher, az ARM-sablon üzembe lesz helyezve a hiányzó erőforrás létrehozásához.
Megjegyzés
Ehhez a szabályzathoz egy NetworkWatcherRG nevű erőforráscsoportra van szükség az előfizetésben. Az Azure létrehozza a NetworkWatcherRG erőforráscsoportot, amikor engedélyezi Network Watcher egy régióban.
{
"properties": {
"displayName": "Deploy network watcher when virtual networks are created",
"mode": "Indexed",
"description": "This policy creates a network watcher resource in regions with virtual networks. You need to ensure existence of a resource group named networkWatcherRG, which will be used to deploy network watcher instances.",
"metadata": {
"category": "Network"
},
"parameters": {},
"policyRule": {
"if": {
"field": "type",
"equals": "Microsoft.Network/virtualNetworks"
},
"then": {
"effect": "DeployIfNotExists",
"details": {
"type": "Microsoft.Network/networkWatchers",
"resourceGroupName": "networkWatcherRG",
"existenceCondition": {
"field": "location",
"equals": "[field('location')]"
},
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
],
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string"
}
},
"resources": [{
"apiVersion": "2016-09-01",
"type": "Microsoft.Network/networkWatchers",
"name": "[concat('networkWacher_', parameters('location'))]",
"location": "[parameters('location')]"
}]
},
"parameters": {
"location": {
"value": "[field('location')]"
}
}
}
}
}
}
}
}
}
Magyarázat
existenceCondition
"type": "Microsoft.Network/networkWatchers",
"resourceGroupName": "networkWatcherRG",
"existenceCondition": {
"field": "location",
"equals": "[field('location')]"
},
A properties.policyRule.then.details blokk közli Azure Policy, hogy mit kell keresni a properties.policyRule.if blokkban létrehozott vagy frissített erőforráshoz kapcsolódóan. Ebben a példában a networkWatcherRG erőforráscsoport egyik hálózati figyelőjének olyan mezővellocation
kell rendelkeznie, amely megegyezik az új vagy frissített erőforrás helyével. A függvény használatával a field()
existenceCondition hozzáférhet az új vagy frissített erőforrás tulajdonságaihoz, különösen a location
tulajdonsághoz.
roleDefinitionIds
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
],
A properties.policyRule.then.details blokk roleDefinitionIdstömbtulajdonsága jelzi a szabályzatdefiníciónak, hogy a felügyelt identitásnak mely jogosultságokkal kell üzembe helyeznie a belefoglalt Resource Manager sablont. Ennek a tulajdonságnak olyan szerepköröket kell tartalmaznia, amelyek rendelkeznek a sablon üzembe helyezéséhez szükséges engedélyekkel, de a "minimális jogosultság elve" fogalmát kell használniuk, és csak a szükséges műveletekkel és semmi többvel kell rendelkezniük.
Üzembehelyezési sablon
A szabályzatdefiníció üzembehelyezési része rendelkezik egy tulajdonságblokktal , amely a három alapvető összetevőt határozza meg:
mode – Ez a tulajdonság beállítja a sablon üzembehelyezési módját .
template – Ez a tulajdonság magában foglalja magát a sablont. Ebben a példában a helysablon paramétere beállítja az új Network Watcher-erőforrás helyét.
"template": { "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string" } }, "resources": [{ "apiVersion": "2016-09-01", "type": "Microsoft.Network/networkWatchers", "name": "[concat('networkWacher_', parameters('location'))]", "location": "[parameters('location')]" }] },
parameters – Ez a tulajdonság a sablonhoz megadott paramétereket határozza meg. A paraméterneveknek meg kell egyeznie a sablonban definiált névvel. Ebben a példában a paraméter neve location to match . A hely értéke ismét a
field()
függvényt használja a kiértékelt erőforrás értékének lekéréséhez, amely a policyRule.if blokkban található virtuális hálózat."parameters": { "location": { "value": "[field('location')]" } }
Következő lépések
- Tekintse át az egyéb mintákat és a beépített definíciókat.
- Tekintse meg az Azure szabályzatdefiníciók struktúrája szakaszt.
- A Szabályzatok hatásainak ismertetése.