问题描述
我正在尝试为手臂模板实施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中删除'