azure - ARM 模板如果条件

标签 azure if-statement templates azure-resource-manager

我正在尝试实现 ARM 模板的 if 条件。想法是从参数中读取是否要在产品或非产品子中部署并预定义子网。然后部署存储并将一些子网添加到存储帐户虚拟网络列表中。

以下行引起了麻烦:

"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 中删除 '

关于azure - ARM 模板如果条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63595371/

相关文章:

database - 在模板中使用 Django 链 如何?

azure - 如何在ADLS中存储databricks集群日志

C char 在 if..else 中不起作用

jsf - 如果列表不为 null 并且 size() > 0,如何显示 JSF 组件

正则表达式双列匹配 R

c++ - 模板特化 : Can we partially implement the special cases

C++ : struggle with generic const pointer

azure - Windows Workflow 4 关联查询在实例 key 计算中包含网站实例名称并失败

azure - 无法解析远程名称 : 'dev.azure.com' when setting up self-hosted devops agent in Docker

c# - azure 上的 FFMpeg 函数无法处理同时调用(超过 5 个)