Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
På samma sätt som auditIfNotExists, så kör en deployIfNotExists riktlinjedefinition en malldistribution när villkoret uppfylls. Principtilldelningar med effekt inställd på DeployIfNotExists kräver en hanterad identitet för att utföra åtgärd.
Anmärkning
Kapslade mallar stöds med deployIfNotExists, men länkade mallar stöds för närvarande inte.
DeployIfNotExists-utvärdering
deployIfNotExists körs efter en konfigurerbar fördröjning när en resursprovider hanterar en skapa- eller uppdateringsbegäran för prenumeration eller resurs och returnerar en lyckad statuskod. En malldistribution sker om det inte finns några relaterade resurser eller om de resurser som definieras av existenceCondition inte utvärderas till true. Distributionens varaktighet beror på komplexiteten hos de resurser som ingår i mallen.
Under en utvärderingscykel markeras principdefinitioner med en DeployIfNotExists-effekt som matchar resurser som icke-kompatibla, men ingen åtgärd vidtas för resursen. Befintliga icke-kompatibla resurser kan åtgärdas med en reparationsaktivitet.
Egenskaper för DeployIfNotExists
Egenskapen details för DeployIfNotExists-effekten har alla underegenskaper som definierar de relaterade resurser som ska matchas och malldistributionen som ska köras.
-
type(krävs)- Anger vilken typ av relaterad resurs som ska matchas.
- Om
typeär en resurstyp under villkorsresursenif, frågar policyn efter resurser av denna typtypeinom ramen för den utvärderade resursen. Annars kan principfrågor inom samma resursgrupp eller prenumeration som den utvärderade resursen, beroende påexistenceScope.
-
name(valfritt)- Anger det exakta namnet på resursen som ska matchas och gör att principen hämtar en specifik resurs i stället för alla resurser av den angivna typen.
- När villkorsvärdena för
if.field.typeochthen.details.typematchar blirnamenödvändiga och måste vara[field('name')]eller[field('fullName')]för en underordnad resurs.
Anmärkning
type och name segment kan kombineras för att allmänt hämta kapslade resurser.
Om du vill hämta en specifik resurs kan du använda "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" och "name": "parentResourceName/nestedResourceName".
Om du vill hämta en samling kapslade resurser kan ett jokertecken ? anges i stället för efternamnssegmentet. Till exempel "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" och "name": "parentResourceName/?". Detta kan kombineras med fältfunktioner för att få åtkomst till resurser som är relaterade till den utvärderade resursen, till exempel "name": "[concat(field('name'), '/?')]".
resourceGroupName(valfritt)- Tillåter matchning av den relaterade resursen att komma från en annan resursgrupp.
- Gäller inte om
typeär en resurs som skulle finnas under denifvillkorsresursen. - Standardvärdet är
ifvillkorsresursens resursgrupp. - Om en mallimplementation körs distribueras den i resursgruppen associerad med det här värdet.
existenceScope(valfritt)- Tillåtna värden är Prenumeration och ResourceGroup.
- Anger omfånget för var den relaterade resursen ska hämtas för att matcha.
- Gäller inte om
typeär en resurs som skulle finnas under denifvillkorsresursen. - För ResourceGroupskulle det begränsas till resursgruppen i
resourceGroupNameom det anges. OmresourceGroupNameinte anges begränsar du tillifvillkorsresursens resursgrupp, vilket är standardbeteendet. - För Prenumerationgör en förfrågan om hela prenumerationen för att hitta relaterade resurser. Tilldelningsomfånget bör anges på prenumerationsnivån eller högre för korrekt utvärdering.
- Standardvärdet är ResourceGroup.
evaluationDelay(valfritt)- Anger när förekomsten av de relaterade resurserna ska utvärderas. Fördröjningen används endast för utvärderingar som är ett resultat av en begäran om att skapa eller uppdatera resurser.
- Tillåtna värden är
AfterProvisioning,AfterProvisioningSuccess,AfterProvisioningFailureeller en ISO 8601-varaktighet mellan 0 och 360 minuter. - Värdena för AfterProvisioning inspekterar etableringsresultatet för resursen som utvärderades i policyregelns
ifvillkor.AfterProvisioningkörs när etableringen är klar, oavsett utfall. Etablering som tar mer än sex timmar behandlas som ett fel vid fastställande av AfterProvisioning utvärderingsfördröjningar. - Standardvärdet är
PT10M(10 minuter). - Om du anger en lång utvärderingsfördröjning kan det leda till att resursens registrerade efterlevnadstillstånd inte uppdateras förrän nästa utvärderingsutlösare.
existenceCondition(valfritt)- Om den inte anges uppfyller alla relaterade resurser
typeeffekten och utlöser inte distributionen. - Använder samma språk som principregeln för
ifvillkoret, men utvärderas mot varje relaterad resurs individuellt. - Om någon matchande relaterad resurs utvärderas till true uppfylls effekten och utlöser inte distributionen.
- Kan använda [field()] för att kontrollera ekvivalensen med värden i
ifvillkor. - Kan till exempel användas för att verifiera att den överordnade resursen (i
ifvillkor) finns på samma resursplats som den matchande relaterade resursen.
- Om den inte anges uppfyller alla relaterade resurser
roleDefinitionIds(krävs)- Den här egenskapen måste innehålla en matris med strängar som matchar roll-ID:n för rollbaserad åtkomstkontroll som är tillgängliga genom prenumerationen. Mer information finns i Reparation – konfigurera principdefinitionen.
deploymentScope(valfritt)- Tillåtna värden är Prenumeration och ResourceGroup.
- Anger vilken typ av distribution som ska utlösas. Prenumerationen anger en distribution på prenumerationsnivå och ResourceGroup anger en distribution till en resursgrupp.
- En platsegenskap måste anges i distributionen när du använder distributioner på prenumerationsnivå.
- Standardvärdet är ResourceGroup.
deployment(krävs)- Den här egenskapen bör innehålla den fullständiga malldistributionen eftersom den skickas till PUT-API:et
Microsoft.Resources/deployments. Mer information finns i REST API för distributioner. - Kapslade
Microsoft.Resources/deploymentsi mallen bör använda unika namn för att undvika konkurrens mellan flera principutvärderingar. Den överordnade distributionens namn kan användas som en del av det kapslade distributionsnamnet via[concat('NestedDeploymentName-', uniqueString(deployment().name))].
Anmärkning
Alla funktioner i
deploymentegenskapen utvärderas som komponenter i mallen, inte principen. Undantaget är egenskapenparameterssom skickar värden från principen till mallen. Ivaluedet här avsnittet under ett mallparameternamn används för att överföra detta värde (se fullDbName i exemplet DeployIfNotExists).- Den här egenskapen bör innehålla den fullständiga malldistributionen eftersom den skickas till PUT-API:et
DeployIfNotExists-exempel
Exempel: Utvärderar SQL Server-databaser för att avgöra om transparentDataEncryption är aktiverat. Om inte, körs en distribution för att möjliggöra.
"if": {
"field": "type",
"equals": "Microsoft.Sql/servers/databases"
},
"then": {
"effect": "deployIfNotExists",
"details": {
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"name": "current",
"evaluationDelay": "AfterProvisioning",
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
],
"existenceCondition": {
"field": "Microsoft.Sql/transparentDataEncryption.status",
"equals": "Enabled"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"fullDbName": {
"type": "string"
}
},
"resources": [
{
"name": "[concat(parameters('fullDbName'), '/current')]",
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"apiVersion": "2014-04-01",
"properties": {
"status": "Enabled"
}
}
]
},
"parameters": {
"fullDbName": {
"value": "[field('fullName')]"
}
}
}
}
}
}
Nästa steg
- Granska exempel i Azure Policy-exempel.
- Granska strukturen för Azure Policy-definitioner.
- Förstå hur du programmatiskt skapar principer.
- Lär dig hur du hämtar efterlevnadsdata.
- Lär dig hur du åtgärdar icke-kompatibla resurser.
- Granska Azure-hanteringsgrupper.