代码之家  ›  专栏  ›  技术社区  ›  user9314395

是否可以开发非嵌套azure arm firewallrules?

  •  0
  • user9314395  · 技术社区  · 8 年前

    这是为了找出我正在尝试的事情是否有可能。。。

    我已经看到了几个开发入门级ARM模板的示例( azuredeploy.json )引用/导入外部子资源模板(例如: azuredeploy.sql.server.json )其中定义了一个新的SQL Server resources 节--嵌套资源,例如firewallrule。

    我看过一个例子( https://blogs.msdn.microsoft.com/azuresqldbsupport/2017/01/11/arm-template-to-deploy-server-with-auditing-and-threat-detection-turned-on/ )其中,条目/父ARM模板(例如: azuredeploy。json )定义SQL Server,而不是将防火墙规则定义为嵌套资源,而是使用 dependsOn 定义执行顺序。

    这似乎比第一种方法更易于维护/嵌套更少。

    但我想进一步推进,在外部模板中定义了上述资源: azuredeploy。json 调用 azuredeploy。sql。服务器json azuredeploy.sql.server.firewallRules.json

    不幸的是,我还没有找到上述方法的一个例子。

    下午的大部分时间我都在尝试,但在将ID和名称的斜杠更改为所有可以想象的配置之后,我一次又一次地尝试:

    代码=InvalidTemplate 消息=部署模板验证失败:“模板资源{资源名称}” 类型{资源类型}的段长度不正确。

    因此,问题是: a) 有什么理由不应该这样做吗?(我觉得它允许一组更模块化的arm模板,可以从一个简单的arm文件中引用,只需要定义一组正确的“dependsOn”属性) b) 以上这些真的可以做到吗?! c) 是否有在线示例来研究上述方法并了解我的方法错误? d) 以防万一:当它给出有关段长度的错误消息时。。。有没有可能它自己弄糊涂了,它考虑的是“Microsoft.Resources/deployments”,而它应该只考虑“Microsoft.Sql/servers”和“Microsoft.Sql/servers/firewallRules”?

    如果有人能在这个关键点上向我提出建议,我将不胜感激。

    1 回复  |  直到 8 年前
        1
  •  1
  •   bmoore-msft    8 年前

    是的,您应该能够做到这一点,请参阅: https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/servers/firewallrules

    您发布的错误表明您缺少名称段或类型段-它们必须匹配,如下例所示。

            "type": "Microsoft.Sql/servers/firewallrules",
            "apiVersion": "2015-05-01-preview",
            "name": "[concat(parameters('serverName'), '/', 'AllowAllWindowsAzureIps')]",
            "location": "[resourceGroup().location]",
            "properties": {
                "endIpAddress": "0.0.0.0",
                "startIpAddress": "0.0.0.0"
            }
    

    所以你的名字属性

    sqlServerResourceName/whateverYouWantToNameTheFirewallRules-并完全按照上面的示例键入。