条件臂模板

问题描述

我正在尝试为手臂模板实施if条件。想法是从要读取的参数开始的,如果它想部署在prod或nonprod子目录中并且具有预定义的子网。然后部署存储并将一些子网添加到存储帐户虚拟网络列表中。

引起麻烦的以下行:

"virtualNetworkRules": "[if(equals(parameters('Sub'),'nonprod'),'variables('nonprodvirtualNetworksubnets').virtualNetworkRulescopy','variables('prodvirtualNetworksubnets').virtualNetworkRulescopy',)]",

非常感谢所有帮助。

"Parameters": {

"Sub": {
    "type": "string","defaultValue": "nonprod","Metadata": {
      "description": "Prod or nonprod sub"
    }
  }
},"variables": {
    "subscriptionId": "[subscription().subscriptionId]","resourcegroupName": "[toupper(concat(parameters('splitSubscriptionName')[0],'-',parameters('splitSubscriptionName')[1],parameters('splitSubscriptionName')[2],'-02-NET-RSG'))]","virtualNetworkname": "[toLower(concat(parameters('splitSubscriptionName')[0],'-02-NET-',parameters('splitSubscriptionName')[3],'-00-net'))]","storageAccountType": "Standard_lrs",//  "allowedValues": ["Standard_lrs","Standard_GRS","Standard_ZRS","Premium_lrs"]
    "blobServicesName": "default","VirtualNetworkExternalId": "[concat('/subscriptions/',variables('subscriptionId'),'/resourceGroups/',variables('resourcegroupName'),'/providers/Microsoft.Network/virtualNetworks/',variables('virtualNetworkname'),'/subnets/')]","nonprodAllowedsubnets": [
      "mngm00-devtest-sub","mngm01-devtest-sub","mngm02-devtest-sub"
    ],"prodAllowedsubnets": [
      "mngm00-prod-sub","mngm01-prod-sub"      
    ],"nonprodvirtualNetworksubnets": {
      "copy": [
        {
          "name": "virtualNetworkRulescopy","count": "[length(variables('nonprodAllowedsubnets'))]","input": {
            "id": "[concat(variables('VirtualNetworkExternalId'),variables('nonprodAllowedsubnets')[copyIndex('virtualNetworkRulescopy')])]","action": "Allow","state": "Succeeded"
          }
        }
      ]
    },"prodvirtualNetworksubnets": {
      "copy": [
        {
          "name": "virtualNetworkRulescopy","count": "[length(variables('prodAllowedsubnets'))]",variables('prodAllowedsubnets')[copyIndex('virtualNetworkRulescopy')])]","state": "Succeeded"
          }
        }
      ]
    }
  },"resources": [
    {
      
      "type": "Microsoft.Storage/storageAccounts","apiVersion": "2019-04-01","name": "[parameters('storageAccountName')]","location": "[resourceGroup().location]","sku": {
        "name": "[variables('storageAccountType')]"
      },"kind": "[parameters('storageAccountKind')]","properties": {
        "accesstier": "[parameters('accesstier')]","supportsHttpsTrafficOnly": true,"allowBlobPublicAccess": false,"networkAcls": {
          "bypass": "AzureServices","virtualNetworkRules": "[if(equals(parameters('Sub'),"defaultAction": "Deny"
        },"encryption": {
          "services": {
            "file": {
              "enabled": true
            },"blob": {
              "enabled": true
            }
          },"keySource": "Microsoft.Storage"
        }
      }
    }
]
}


解决方法

应该是这样的:

[if(equals(parameters('Sub'),'nonprod'),variables('nonprodvirtualNetworkSubnets').virtualNetworkRulesCopy,variables('prodvirtualNetworkSubnets').virtualNetworkRulesCopy]

从您的if中删除'