Share via


Azure İlkesi tanımları deployIfNotExists etkisi

benzer şekilde auditIfNotExists, koşul karşılandığında bir deployIfNotExists ilke tanımı şablon dağıtımı yürütür. DeployIfNotExists olarak ayarlanmış olan ilke atamaları, düzeltme yapmak için yönetilen bir kimlik gerektirir.

Not

İç içe şablonlar ile deployIfNotExistsdesteklenir, ancak bağlantılı şablonlar şu anda desteklenmez.

DeployIfNotExists değerlendirmesi

deployIfNotExists , Kaynak Sağlayıcısı bir oluşturma veya güncelleştirme aboneliğini veya kaynak isteğini işlediğinde ve bir başarı durum kodu döndürdükten sonra yapılandırılabilir bir gecikmeden sonra çalışır. şablon dağıtımı, ilişkili kaynak yoksa veya tarafından existenceCondition tanımlanan kaynaklar doğru olarak değerlendirilmediyse gerçekleşir. Dağıtımın süresi, şablona dahil olan kaynakların karmaşıklığına bağlıdır.

Değerlendirme döngüsü sırasında, kaynaklarla eşleşen DeployIfNotExists etkisine sahip ilke tanımları uyumsuz olarak işaretlenir, ancak bu kaynak üzerinde hiçbir işlem yapılmaz. Mevcut uyumlu olmayan kaynaklar bir düzeltme göreviyle düzeltilebilir.

DeployIfNotExists özellikleri

details DeployIfNotExists efektinin özelliği, eşleşecek ilgili kaynakları ve yürütülecek şablon dağıtımını tanımlayan tüm alt özelliklere sahiptir.

  • type (gerekli)
    • Eşleşecek ilgili kaynağın türünü belirtir.
    • Koşul kaynağının if altında bir kaynak türü varsatype, ilke, değerlendirilen kaynak kapsamında bunun type kaynaklarını sorgular. Aksi takdirde, ilke sorguları, öğesine bağlı olarak değerlendirilen kaynakla aynı kaynak grubu veya abonelik içinde sorgular existenceScope.
  • name (isteğe bağlı)
    • Eşleşecek kaynağın tam adını belirtir ve ilkenin belirtilen türdeki tüm kaynaklar yerine belirli bir kaynağı getirmesine neden olur.
    • ve için if.field.typethen.details.type koşul değerleri eşleştiğindename, gerekli hale gelir ve bir alt kaynak için veya [field('fullName')] olmalıdır[field('name')].

Not

type ve name kesimleri iç içe kaynakları genel olarak almak için birleştirilebilir.

Belirli bir kaynağı almak için ve "name": "parentResourceName/nestedResourceName"kullanabilirsiniz"type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType".

İç içe kaynaklar koleksiyonunu almak için, soyadı kesimi yerine bir joker karakter ? sağlanabilir. Örneğin, "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" ve "name": "parentResourceName/?". Bu, değerlendirilen kaynakla ilgili kaynaklara erişmek için alan işlevleriyle birleştirilebilir, örneğin "name": "[concat(field('name'), '/?')]"."

  • resourceGroupName (isteğe bağlı)

    • İlgili kaynağın eşleşmesinin farklı bir kaynak grubundan gelmesini sağlar.
    • Koşul kaynağının altında if yer alan bir kaynaksa type geçerli değildir.
    • Varsayılan, koşul kaynağının if kaynak grubudur.
    • Bir şablon dağıtımı yürütülürse, bu değerin kaynak grubunda dağıtılır.
  • existenceScope (isteğe bağlı)

    • İzin verilen değerler Subscription ve ResourceGroup değerleridir.
    • Eşleşmesi gereken ilgili kaynağın getirileceği yerin kapsamını ayarlar.
    • Koşul kaynağının altında if yer alan bir kaynaksa type geçerli değildir.
    • ResourceGroup için, belirtilirse içindeki resourceGroupName kaynak grubuyla sınırlayabilir. Belirtilmezse resourceGroupName , koşul kaynağının if kaynak grubuyla sınırlanır ve bu varsayılan davranıştır.
    • Abonelik için ilgili kaynak için aboneliğin tamamını sorgular. Uygun değerlendirme için atama kapsamı abonelikte veya daha yüksek bir değerde ayarlanmalıdır.
    • Varsayılan değer ResourceGroup'tır.
  • evaluationDelay (isteğe bağlı)

    • İlgili kaynakların varlığının ne zaman değerlendirilmesi gerektiğini belirtir. Gecikme yalnızca kaynak oluşturma veya güncelleştirme isteğinin sonucu olan değerlendirmeler için kullanılır.
    • İzin verilen değerler, , AfterProvisioningSuccess, AfterProvisioningFailureveya 0 ile 360 dakika arasında bir ISO 8601 süresidirAfterProvisioning.
    • AfterProvisioning değerleri, ilke kuralının if koşulunda değerlendirilen kaynağın sağlama sonucunu inceler. AfterProvisioning sonuç ne olursa olsun sağlama tamamlandıktan sonra çalışır. Altı saatten uzun süren sağlama, Değerlendirme sonrası gecikmeleri belirlenirken hata olarak değerlendirilir.
    • Varsayılan değer ( PT10M 10 dakika).
    • Uzun bir değerlendirme gecikmesi belirtilmesi, kaynağın kayıtlı uyumluluk durumunun bir sonraki değerlendirme tetikleyicisine kadar güncelleştirilmemesiyle sonuçlanabilir.
  • existenceCondition (isteğe bağlı)

    • Belirtilmezse, ilgili kaynaklardan herhangi biri type etkiyi karşılar ve dağıtımı tetiklemez.
    • Koşul için if ilke kuralıyla aynı dili kullanır, ancak ilgili her kaynak için ayrı ayrı değerlendirilir.
    • Eşleşen ilgili herhangi bir kaynak true olarak değerlendirilirse, etki karşılanır ve dağıtımı tetiklemez.
    • Koşuldaki if değerlerle eşdeğerliği denetlemek için [field()] kullanabilir.
    • Örneğin, üst kaynağın (koşulda if ) eşleşen ilgili kaynakla aynı kaynak konumunda olduğunu doğrulamak için kullanılabilir.
  • roleDefinitionIds (gerekli)

    • Bu özellik, abonelik tarafından erişilebilen rol tabanlı erişim denetimi rol kimliğiyle eşleşen bir dizi dize içermelidir. Daha fazla bilgi için bkz . düzeltme - ilke tanımını yapılandırma.
  • deploymentScope (isteğe bağlı)

    • İzin verilen değerler Subscription ve ResourceGroup değerleridir.
    • Tetiklenecek dağıtım türünü ayarlar. Abonelik, abonelik düzeyinde bir dağıtımı, ResourceGroup ise bir kaynak grubuna yapılan dağıtımı gösterir.
    • Abonelik düzeyi dağıtımları kullanılırken Dağıtım'dabir konum özelliği belirtilmelidir.
    • Varsayılan değer ResourceGroup'tır.
  • deployment (gerekli)

    • Put API'sine geçirileceği için bu özellik tam şablon dağıtımını Microsoft.Resources/deployments içermelidir. Daha fazla bilgi için bkz. Dağıtımlar REST API'si.
    • Microsoft.Resources/deployments Birden çok ilke değerlendirmesi arasında çekişme olmaması için şablonun içinde iç içe yerleştirilmiş benzersiz adlar kullanılmalıdır. Üst dağıtımın adı aracılığıyla [concat('NestedDeploymentName-', uniqueString(deployment().name))]iç içe dağıtım adının bir parçası olarak kullanılabilir.

    Not

    özelliğindeki deployment tüm işlevler, ilkenin değil, şablonun bileşenleri olarak değerlendirilir. Özel durum, parameters ilkedeki değerleri şablona geçiren özelliktir. value Bu bölümdeki şablon parametresi adı altında, bu değer geçirme işlemini gerçekleştirmek için kullanılır (DeployIfNotExists örneğinde fullDbName bölümüne bakın).

DeployIfNotExists örneği

Örnek: Etkinleştirilip etkinleştirilmediğini transparentDataEncryption belirlemek için SQL Server veritabanlarını değerlendirir. Aksi takdirde, etkinleştirilen bir dağıtım yürütülür.

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

Sonraki adımlar