繁体   English   中英

臂模板如果条件

[英]Arm template if condition

我正在尝试实现 arm 模板的 if 条件。 想法是从参数中读取,如果它假设部署在 prod 或 nonprod sub 中并预定义了子网。 然后部署存储并将一些子网添加到存储帐户虚拟网络列表中。

以下行引起麻烦:

"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], '-', parameters('splitSubscriptionName')[1], '-', parameters('splitSubscriptionName')[2], '-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'))]",
          "input": {
            "id": "[concat(variables('VirtualNetworkExternalId'), variables('prodAllowedSubnets')[copyIndex('virtualNetworkRulesCopy')])]",
            "action": "Allow",
            "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'), 'nonprod'),'variables('nonprodvirtualNetworkSubnets').virtualNetworkRulesCopy', 'variables('prodvirtualNetworkSubnets').virtualNetworkRulesCopy', )]",
          "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 中删除'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM