Feltételes üzembe helyezés ARM-sablonokban

Néha előfordulhat, hogy üzembe kell helyeznie egy erőforrást egy Azure Resource Manager sablonban (ARM-sablonban). A elem condition használatával adhatja meg, hogy az erőforrás üzembe legyen-e stb. A feltétel értéke true (igaz) vagy false (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 gyermekerőforrását, minden erőforrástípusra ugyanazt a feltételt kell alkalmaznia.

Üzembe helyezési feltétel

Átadhat egy paraméterértéket, amely jelzi, hogy az erőforrás üzembe van-e adva. 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 egy új tárfiók üzembe helyezését vagy egy meglévő tárfiók használatát mutatja be.

{
  "$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"
      ]
    }
  },
  "functions": [],
  "resources": [
    {
      "condition": "[equals(parameters('newOrExisting'), 'new')]",
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    }
  ]
}

Ha a paraméter newOrExisting értéke új, a feltétel kiértékelése igaz. A tárfiók üzembe van véve. Ha azonban a meglévőre van állítva, a feltétel kiértékelése false (hamis) lesz, és a newOrExisting tárfiók nincs üzembe állítva.

A elemet használó teljes példasablonért lásd: Új vagy meglévő virtuális gép, condition Virtual Network, Storage IP-cím.

Futásidejű függvények

Ha egy referencia- vagy listafunkciót használ egy feltételesen üzembe helyezett erőforrással, akkor a függvény akkor is kiértékelhető, ha az erőforrás nincs üzembe helyezésen. Hibaüzenetet kap, ha a függvény nem létező erőforrásra hivatkozik.

Az if függvény használatával győződjön meg arról, hogy a függvény csak az erőforrás üzembe helyezésekor értékeli ki a feltételeket. Tekintse meg az if függvényt egy olyan mintasablonhoz, amely feltételesen üzembe helyezett erőforrással használja if a és a reference függvényt.

Az erőforrásokat pontosan úgy állíthatja be, hogy egy feltételes erőforrástól függenek, ugyanúgy, mint bármely más erőforrástól. Ha egy feltételes erőforrás nincs telepítve, a Azure Resource Manager automatikusan eltávolítja azt a szükséges függőségekből.

Teljes mód

Ha teljes módban helyez üzembe egy sablont, és az erőforrás nem lesz telepítve, mert a kiértékelése hamis, az eredmény attól függ, hogy REST API sablon üzembe helyezéséhez melyik verziót condition használja. Ha a 2019-05-10-esnél korábbi verziót használ, az erőforrás nem törlődik. A 2019-05-10-es vagy újabb időpontban az erőforrás törölve lesz. 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