Aracılığıyla paylaş


ARM şablonlarında koşullu dağıtım

Bazen isteğe bağlı olarak Bir Azure Resource Manager şablonunda (ARM şablonu) bir kaynak dağıtmanız gerekir. kaynağın condition dağıtılıp dağıtılmayacağını belirtmek için öğesini kullanın. Koşulun değeri true veya false olarak çözümlenmektedir. Değer true olduğunda kaynak oluşturulur. Değer false olduğunda kaynak oluşturulmaz. Değer yalnızca kaynağın tamamına uygulanabilir.

Uyarı

Koşullu dağıtım alt kaynaklara otomatik olarak uygulanmaz. Bir kaynağı ve alt kaynaklarını koşullu olarak dağıtmak istiyorsanız, her kaynak türüne aynı koşulu uygulamanız gerekir.

Tip

ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi edinmek için bkz. koşullu dağıtımlar.

Dağıtma koşulu

Kaynağın dağıtılıp dağıtılmadığını gösteren bir parametre değeri geçirebilirsiniz. Aşağıdaki örnek bir DNS bölgesini koşullu olarak dağıtır.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "deployZone": {
      "type": "bool",
      "defaultValue": true
    }
  },
  "functions": [],
  "resources": [
    {
      "condition": "[parameters('deployZone')]",
      "type": "Microsoft.Network/dnsZones",
      "apiVersion": "2023-07-01-preview",
      "name": "myZone",
      "location": "global",
      "properties": {
        "zoneType": "Public"
      }
    }
  ]
}

Daha karmaşık bir örnek için bkz. Azure SQL mantıksal sunucusu.

Yeni veya mevcut kaynak

Koşullu dağıtımı kullanarak yeni bir kaynak oluşturabilir veya var olan bir kaynağı kullanabilirsiniz. Aşağıdaki örnekte yeni bir depolama hesabının nasıl dağıtılacağı veya mevcut bir depolama hesabının nasıl kullanılacağı gösterilmektedir.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "newOrExisting": {
      "type": "string",
      "defaultValue": "new",
      "allowedValues": [
        "new",
        "existing"
      ]
    }
  },
  "resources": [
    {
      "condition": "[equals(parameters('newOrExisting'), 'new')]",
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    },
    {
      "condition": "[equals(parameters('newOrExisting'), 'existing')]",
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageAccountName')]"
    }
  ],
  "outputs": {
    "storageAccountId": {
      "type": "string",
      "value": "[if(equals(parameters('newOrExisting'), 'new'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')))]"
    }
  }
}

Parametresi newOrExisting yeni olarak ayarlandığında koşul true olarak değerlendirilir. Depolama hesabı dağıtıldı. Aksi takdirde mevcut depolama hesabı kullanılır.

öğesini kullanan condition eksiksiz bir örnek şablon için bkz. Yeni veya mevcut bir Sanal Ağ, Depolama ve Genel IP ile VM.

Çalışma zamanı fonksiyonları

Koşullu olarak dağıtılan bir kaynakla bir başvuru veya liste işlevi kullanırsanız, kaynak dağıtılmasa bile işlev değerlendirilir. İşlev var olmayan bir kaynağa başvuruyorsa bir hata alırsınız.

İşlevin yalnızca kaynak dağıtıldığında koşullar için değerlendirildiğinden emin olmak için if işlevini kullanın. Örnek bir şablonda, koşullu olarak dağıtılan bir kaynakla if ve reference kullanan if işlevine bakın.

Bir kaynağı, diğer kaynaklar gibi koşullu kaynağa bağımlı olarak ayarlarsınız. Koşullu kaynak dağıtılmadığında, Azure Resource Manager bunu gerekli bağımlılıklardan otomatik olarak kaldırır.

Tamamlama modu

Eksiksiz modda bir şablon dağıtırsanız ve false olarak değerlendirildiği için condition kaynak dağıtılmazsa sonuç, şablonu dağıtmak için kullandığınız REST API sürümüne bağlıdır. 2019-05-10'dan önceki bir sürümü kullanıyorsanız, kaynak silinmez. 2019-05-10 veya üzeri sürümlerde kaynak silinir. Azure PowerShell ve Azure CLI'nın en son sürümleri koşul yanlış olduğunda kaynağı siler.

Sonraki Adımlar