Feltételes üzembe helyezés ARM-sablonokban

Előfordulhat, hogy szükség van egy erőforrás azure Resource Manager-sablonban (ARM-sablonban) történő üzembe helyezésére. condition Az elem használatával megadhatja, hogy az erőforrás üzembe lett-e helyezve. A feltétel értéke igaz vagy hamis lesz. Ha az érték igaz, az erőforrás létrejön. Ha az érték hamis, az erőforrás nem jön létre. Az érték csak a teljes erőforrásra alkalmazható.

Megjegyzés

A feltételes üzembe helyezés nem kaszkádolt a gyermekerőforrásokra. Ha feltételesen szeretne üzembe helyezni egy erőforrást és annak alárendelt erőforrásait, minden erőforrástípusra ugyanazt a feltételt kell alkalmaznia.

Tipp

Azért javasoljuk a Bicep használatát, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információ: feltételes üzembe helyezés.

Üzembe helyezési feltétel

Megadhat egy paraméterértéket, amely jelzi, hogy egy erőforrás üzembe lett-e helyezve. Az alábbi példa feltételesen üzembe helyez egy DNS-zónát.

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

Összetettebb példa: Azure SQL logikai kiszolgáló.

Új vagy meglévő erőforrás

A feltételes üzembe helyezéssel új erőforrást hozhat létre, vagy használhat egy meglévőt. Az alábbi példa bemutatja, hogyan helyezhet üzembe egy új tárfiókot, vagy hogyan használhat meglévő tárfiókot.

{
  "$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": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    },
    {
      "condition": "[equals(parameters('newOrExisting'), 'existing')]",
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-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')))]"
    }
  }
}

Ha a paraméter newOrExistingúj értékre van állítva, a feltétel true (igaz) értéket ad vissza. A tárfiók üzembe van helyezve. Ellenkező esetben a meglévő tárfiókot használja a rendszer.

Az elemet használó condition teljes példasablonért lásd: Új vagy meglévő Virtual Network, Storage és Nyilvános IP-címmel rendelkező virtuális gép.

Futtatókörnyezeti függvények

Ha feltételesen üzembe helyezett erőforrással használ referencia- vagy listafüggvényt, a függvény akkor is kiértékelhető, ha az erőforrás nincs üzembe helyezve. Hibaüzenet jelenik meg, ha a függvény nem létező erőforrásra hivatkozik.

Az if függvénnyel győződjön meg arról, hogy a függvény csak az erőforrás üzembe helyezésekor van kiértékelve. Tekintse meg a feltételesen üzembe helyezett erőforrást használó és reference egy feltételesen üzembe helyezett erőforrást használó if mintasablon if függvényét.

Az erőforrásokat úgy állítja be, mint egy feltételes erőforrást , pontosan úgy, mint bármely más erőforrást. Ha egy feltételes erőforrás nincs üzembe helyezve, az Azure Resource Manager automatikusan eltávolítja a szükséges függőségekből.

Teljes mód

Ha teljes módban helyez üzembe egy sablont, és egy erőforrás nincs üzembe helyezve, mert condition a kiértékelése hamis, az eredmény attól függ, hogy melyik REST API-verziót használja a sablon üzembe helyezéséhez. Ha 2019.05.10-nél korábbi verziót használ, az erőforrás nem törlődik. A 2019-05-10 vagy újabb verziójú erőforrás törlődik. A Azure PowerShell és az Azure CLI legújabb verziói törlik az erőforrást, ha a feltétel hamis.

Következő lépések