azure 在ARM模板中传递空参数值

edqdpe6u  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(140)

我想在一个模板中传递一个空值,我有一个模板,我试图在其中传递一组条件给它,例如假设如果cidr范围不存在,跳过资源部署,如果cidr范围存在,继续部署资源。

{
    "type": "Microsoft.Network/virtualNetworks/subnets",
    "condition": "[not(equals(parameters('environmentAbbreviation'), 'd01'))]",    
    "apiVersion": "2020-05-01",
    "name": "[concat(variables('vnetResourceName'), '/',  variables('SubnetName'))]",
    "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetResourceName'))]"
    ],
    "properties": {
        "addressPrefix": "[not(empty(parameters('SubnetAddressPrefix01')))]",
        "networkSecurityGroup": {
          "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroup1'))]"
        },
        "privateEndpointNetworkPolicies": "Enabled",
        "privateLinkServiceNetworkPolicies": "Enabled"
    }
},

我尝试了多种方法使模板工作,但抛出一个错误,声明参数值为空,
对于上面的代码我得到错误:子网的格式不正确。它应该遵循CIDR表示法,例如10.0.0.0/24。即使我遵循了正确的cidr范围

wb1gzix0

wb1gzix01#

要跳过资源部署(如果CIDR范围存在):

  • 在 * properties下的 * address prefix * 中使用以下 * if condition *。
    修改address prefix condition如下所示
"addressPrefix": "[if(not(empty(parameters('SubnetAddressPrefix01'),'yes'))), variables('SubnetAddressPrefix01'),  json('null'))]"

如果像这样传递它,它不会抛出null参数错误。
有关**“ARM模板的逻辑函数”,请参阅MSDoc。**

  • 相应地修改后,我在我的环境中尝试了 * json * 的副本,并成功部署了它。*

相关问题