Megosztás a következőn keresztül:


Azure Policy-definíciók deployIfNotExists effektus

auditIfNotExistsEhhez hasonlóan egy deployIfNotExists szabályzatdefiníció végrehajt egy sablontelepítést a feltétel teljesülésekor. A DeployIfNotExists effektuskészlettel rendelkező szabályzat-hozzárendelésekhez felügyelt identitás szükséges a szervizeléshez.

Feljegyzés

A beágyazott sablonok támogatottak deployIfNotExists, de a csatolt sablonok jelenleg nem támogatottak.

DeployIfNotExists kiértékelése

deployIfNotExists Konfigurálható késés után fut, amikor egy erőforrás-szolgáltató egy létrehozási vagy frissítési előfizetést vagy erőforrás-kérést kezel, és sikeres állapotkódot ad vissza. A sablon üzembe helyezése akkor történik, ha nincsenek kapcsolódó erőforrások, vagy ha az általuk definiált existenceCondition erőforrások nem teljesülnek. Az üzembe helyezés időtartama a sablonban található erőforrások összetettségétől függ.

A kiértékelési ciklus során az erőforrásoknak megfelelő DeployIfNotExists effektussal rendelkező szabályzatdefiníciók nem megfelelőként vannak megjelölve, de nem történik művelet az adott erőforráson. A meglévő nem megfelelő erőforrások szervizelhetők szervizelési feladattal.

DeployIfNotExists tulajdonságok

A details DeployIfNotExists effektus tulajdonsága tartalmazza az összes olyan altulajdonságot, amely meghatározza az egyező kapcsolódó erőforrásokat és a végrehajtandó sablontelepítést.

  • type (kötelező)
    • Megadja az egyező kapcsolódó erőforrás típusát.
    • Ha type egy erőforrástípus a if feltételerőforrás alatt található, a szabályzat lekérdezi ennek type erőforrásait a kiértékelt erőforrás hatókörén belül. Ellenkező esetben a szabályzat lekérdezései ugyanabban az erőforráscsoportban vagy előfizetésben találhatók, mint a kiértékelt erőforrás az existenceScopeadott erőforrástól függően.
  • name (nem kötelező)
    • Megadja annak az erőforrásnak a pontos nevét, amelynek egyeznie kell, és a szabályzat egy adott erőforrást hív le a megadott típusú erőforrások helyett.
    • Ha a feltétel értéke if.field.type then.details.type és az egyezés, akkor name kötelezővé válik, és a gyermekerőforrásnak vagy [field('fullName')] a gyermekerőforrásnak kell lennie[field('name')].

Feljegyzés

type és name a szegmensek kombinálhatók a beágyazott erőforrások általános lekéréséhez.

Egy adott erőforrás lekéréséhez használhatja és "name": "parentResourceName/nestedResourceName"használhatja "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" a .

Beágyazott erőforrások gyűjteményének lekéréséhez helyettesítő karakter ? adható meg a vezetéknév-szegmens helyett. Például: "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" és "name": "parentResourceName/?". Ez kombinálható mezőfüggvényekkel a kiértékelt erőforráshoz kapcsolódó erőforrások eléréséhez, például "name": "[concat(field('name'), '/?')]"."

  • resourceGroupName (nem kötelező)

    • Lehetővé teszi a kapcsolódó erőforrás egyezését egy másik erőforráscsoportból.
    • Nem alkalmazható, ha type olyan erőforrásról van szó, amely a if feltételerőforrás alatt lenne.
    • Az alapértelmezett érték a if feltételerőforrás erőforráscsoportja.
    • Ha egy sablontelepítés végrehajtása történik, az az érték erőforráscsoportjában lesz üzembe helyezve.
  • existenceScope (nem kötelező)

    • Az engedélyezett értékek az Előfizetés és a ResourceGroup.
    • Beállítja, hogy a kapcsolódó erőforrás honnan kérje le az egyező erőforrás hatókörét.
    • Nem alkalmazható, ha type olyan erőforrásról van szó, amely a if feltételerőforrás alatt lenne.
    • A ResourceGroup esetében a megadott erőforráscsoportra resourceGroupName lenne korlátozva. Ha resourceGroupName nincs megadva, akkor a if feltételerőforrás erőforráscsoportjára korlátozható, ami az alapértelmezett viselkedés.
    • Előfizetés esetén lekérdezi a teljes előfizetést a kapcsolódó erőforráshoz. A hozzárendelés hatókörét előfizetésben vagy annál magasabb szinten kell beállítani a megfelelő értékeléshez.
    • Az alapértelmezett érték a ResourceGroup.
  • evaluationDelay (nem kötelező)

    • Meghatározza, hogy mikor kell kiértékelni a kapcsolódó erőforrások meglétét. A késést csak a létrehozási vagy frissítési erőforrás-kérés eredményeként kapott értékelésekhez használja a rendszer.
    • Az engedélyezett értékek AfterProvisioningAfterProvisioningSuccessAfterProvisioningFailure0 és 360 perc közötti ISO 8601-es időtartamok.
    • Az AfterProvisioning értékek a szabályzatszabály if feltételében kiértékelt erőforrás kiépítési eredményét vizsgálják. AfterProvisioning a kiépítés befejezése után fut, függetlenül az eredménytől. A hat óránál hosszabb ideig tartó üzembe helyezést hibaként kezeli a rendszer az afterProvisioning kiértékelési késéseinek meghatározásakor.
    • Az alapértelmezett érték PT10M (10 perc).
    • Ha hosszú kiértékelési késleltetést ad meg, előfordulhat, hogy az erőforrás rögzített megfelelőségi állapota nem frissül a következő kiértékelési eseményindítóig.
  • existenceCondition (nem kötelező)

    • Ha nincs megadva, a kapcsolódó erőforrás type megfelel az effektusnak, és nem indítja el az üzembe helyezést.
    • Ugyanazt a nyelvet használja, mint a feltétel házirendszabálya if , de a rendszer egyenként értékeli ki az egyes kapcsolódó erőforrásokat.
    • Ha az egyező kapcsolódó erőforrások értéke igaz, az eredmény teljesül, és nem indítja el az üzembe helyezést.
    • A [field()] használatával ellenőrizheti a feltételben szereplő if értékekkel való egyenértékűséget.
    • Használható például annak ellenőrzésére, hogy a szülőerőforrás (a if feltételben) ugyanabban az erőforráshelyen található-e, mint az egyező kapcsolódó erőforrás.
  • roleDefinitionIds (kötelező)

  • deploymentScope (nem kötelező)

    • Az engedélyezett értékek az Előfizetés és a ResourceGroup.
    • Beállítja az aktiválandó üzembe helyezés típusát. Az előfizetés előfizetési szintű üzembe helyezést, a ResourceGroup pedig egy erőforráscsoportba való üzembe helyezést jelez.
    • Az előfizetési szintű központi telepítések használatakor meg kell adni egy helytulajdonságot az üzembe helyezésben .
    • Az alapértelmezett érték a ResourceGroup.
  • deployment (kötelező)

    • Ennek a tulajdonságnak tartalmaznia kell a sablon teljes üzembe helyezését, mivel az át lesz adva a Microsoft.Resources/deployments PUT API-nak. További információ: Deployments REST API.
    • A sablonba ágyazva Microsoft.Resources/deployments egyedi neveket kell használnia, hogy elkerülje a több szabályzatértékelés közötti versengést. A szülőtelepítés neve a beágyazott üzembehelyezési név részeként használható a következővel: [concat('NestedDeploymentName-', uniqueString(deployment().name))].

    Feljegyzés

    A tulajdonságon belüli összes függvényt a deployment rendszer a sablon összetevőiként értékeli ki, nem pedig a szabályzatot. Kivételt képez az a parameters tulajdonság, amely a szabályzatból a sablonba továbbítja az értékeket. A value sablonparaméter neve alatti szakasz ezt az értéket adja át (lásd : fullDbName a DeployIfNotExists példában).

DeployIfNotExists példa

Példa: Kiértékeli az SQL Server-adatbázisokat annak megállapításához, hogy engedélyezve van-e transparentDataEncryption . Ha nem, akkor a rendszer végrehajt egy üzembe helyezést az engedélyezéshez.

"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')]"
          }
        }
      }
    }
  }
}

Következő lépések