Freigeben über


Bedingte Bereitstellung in ARM-Vorlagen

Manchmal müssen Sie optional eine Ressource in einer Azure Resource Manager-Vorlage (ARM-Vorlage) bereitstellen. Verwenden Sie das condition Element, um anzugeben, ob die Ressource bereitgestellt wird. Der Wert für die Bedingung wird in "true" oder "false" aufgelöst. Wenn der Wert "true" ist, wird die Ressource erstellt. Wenn der Wert FALSE ist, wird die Ressource nicht erstellt. Der Wert kann nur auf die gesamte Ressource angewendet werden.

Hinweis

Die bedingte Bereitstellung wird nicht an untergeordnete Ressourcen weitergegeben. Wenn Sie eine Ressource und ihre untergeordneten Ressourcen bedingt bereitstellen möchten, müssen Sie dieselbe Bedingung auf jeden Ressourcentyp anwenden.

Tipp

Wir empfehlen Bicep, weil es dieselben Funktionen wie ARM-Vorlagen bietet und die Syntax einfacher zu verwenden ist. Weitere Informationen finden Sie unter bedingten Bereitstellungen.

Einsatzbedingung

Sie können einen Parameterwert übergeben, der angibt, ob eine Ressource bereitgestellt wird. Im folgenden Beispiel wird eine DNS-Zone bedingt bereitgestellt.

{
  "$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"
      }
    }
  ]
}

Ein komplexeres Beispiel finden Sie unter Azure SQL Logical Server.

Neue oder vorhandene Ressource

Sie können bedingte Bereitstellung verwenden, um eine neue Ressource zu erstellen oder eine vorhandene zu verwenden. Das folgende Beispiel zeigt, wie Sie entweder ein neues Speicherkonto bereitstellen oder ein vorhandenes Speicherkonto verwenden.

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

Wenn der Parameter newOrExisting auf new festgelegt ist, wird die Bedingung zu „true“ ausgewertet. Das Speicherkonto wird bereitgestellt. Andernfalls wird das vorhandene Speicherkonto verwendet.

Eine vollständige Beispielvorlage, die das condition Element verwendet, finden Sie unter VM mit einer neuen oder vorhandenen virtuellen Netzwerk-, Speicher- und öffentlichen IP-Adresse.

Laufzeitfunktionen

Wenn Sie eine Referenz - oder Listenfunktion mit einer Ressource verwenden, die bedingt bereitgestellt wird, wird die Funktion auch dann ausgewertet, wenn die Ressource nicht bereitgestellt wird. Wenn sich die Funktion auf eine Ressource bezieht, die nicht vorhanden ist, wird ein Fehler angezeigt.

Verwenden Sie die If-Funktion , um sicherzustellen, dass die Funktion nur für Bedingungen ausgewertet wird, wenn die Ressource bereitgestellt wird. Sehen Sie sich die Funktion "if" für eine Beispielvorlage an, die if und reference mit einer bedingt bereitgestellten Ressource verwendet.

Sie legen eine Ressource so fest, dass sie von einer bedingten Ressource genau wie jede andere Ressource abhängig ist. Wenn eine bedingte Ressource nicht bereitgestellt wird, entfernt Azure Resource Manager sie automatisch aus den erforderlichen Abhängigkeiten.

Vollständiger Modus

Wenn Sie eine Vorlage mit vollständigem Modus bereitstellen und eine Ressource nicht bereitgestellt wird, da condition sie als falsch ausgewertet wird, hängt das Ergebnis davon ab, welche REST-API-Version Sie für die Bereitstellung der Vorlage verwenden. Wenn Sie eine Frühere Version als 2019-05-10 verwenden, wird die Ressource nicht gelöscht. Ab dem 2019-05-10 oder danach wird die Ressource gelöscht. Die neuesten Versionen von Azure PowerShell und Azure CLI löschen die Ressource, wenn die Bedingung falsch ist.

Nächste Schritte