如何使用 Azure ARM 模板在 Azure SQL 服务器中一次添加多个客户端 IP 地址?

How to add multiple client IP addresses at time in Azure SQL Server using Azure ARM Templates?

目前我正在努力通过使用 Azure ARM 模板在防火墙规则下添加多个 IP 地址来部署 Azure SQL 数据库。

这是在 Azure SQL 服务器的防火墙设置下添加一个 IP 地址的代码。

{
      "name": "AllowAllMicrosoftAzureIps",
      "type": "firewallrules",
      "apiVersion": "2014-04-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "startIpAddress": "[parameters('startIpAddress')]",
        "endIpAddress": "[parameters('endIpAddress')]"
      },
      "dependsOn": [
        "[variables('sqlServerName')]"
      ]
    },

但我想在 Azure SQL 使用 Azure ARM 模板的数据库的防火墙设置下一次添加多个 IP 地址。

我还没有测试过,但我相信它看起来像这样。使用 copy 迭代器并提供一个开始和结束 IP 地址数组。

"parameters": { 
    "firewallIpAddresses": { 
        "type": "object", 
        "defaultValue": [ 
            { "start": "1.1.1.0", "end": "1.1.1.10","clientName": "Client1" },
            { "start": "1.2.3.4", "end": "1.2.3.16","clientName": "Client2" },
            { "start": "1.2.0.1", "end": "1.2.0.20","clientName": "Client3" }
        ] 
    }
},
"resources": [
{
     "name": "[concat(variables('sqlServerName'), '/', parameters('firewallIpAddresses')[copyIndex()].clientName)]",
     "type": "Microsoft.Sql/servers/firewallrules",
     "apiVersion": "2014-04-01",
     "location": "[resourceGroup().location]",
     "properties": {
        "startIpAddress": "[parameters('firewallIpAddresses')[copyIndex('firewallrulecopy')].start]",
        "endIpAddress": "[parameters('firewallIpAddresses')[copyIndex('firewallrulecopy')].end]"
     },
     "dependsOn": [
        "[variables('sqlServerName')]"
    ],
    "copy": {
        "name": "firewallrulecopy",
        "count": "[length(parameters('firewallIpAddresses'))]"
    }
}
]
  "name": "nba-instance-one",
    "type": "Microsoft.Sql/servers",
    "apiVersion": "2014-04-01",
    "location": "[resourceGroup().location]",
    "tags": {
        "displayName": "sql-server-instance"
    },
    "properties": {
        "administratorLogin": "admin",
        "administratorLoginPassword": "password"
    },
    "resources": [ 
        {
            "type": "firewallRules",
            "apiVersion": "2014-04-01",
            "location": "[resourceGroup().location]",
            "name": "LaptopIp",
            "properties": {
                "startIpAddress": "39.188.172.29",
                "endIpAddress": "39.188.172.29"
            },
            "dependsOn": [
                "[resourceId('Microsoft.Sql/servers', 'sql-server-instance')]"
            ]
        },
        {
            "type": "firewallRules",
            "apiVersion": "2014-04-01",
            "location": "[resourceGroup().location]",
            "name": "OtherIP",
            "properties": {
                "startIpAddress": "38.171.192.48",
                "endIpAddress": "38.171.192.48"
            },
            "dependsOn": [
                "[resourceId('Microsoft.Sql/servers', 'sql-server-instance')]"
            ]
        }

如果只有几个 IP 地址,您可以为每个 IP 地址添加更多防火墙规则。