有条件地使用ARM模板添加站点属性

问题描述 投票:0回答:1

我有时会希望我的站点具有hostNameSslStates属性。我一直试图找出如何在没有单独部署具有hostNameSslState的站点和没有hostNameSslState的站点的情况下进行此操作。

这就是我今天要添加站点的方式,然后添加插槽,配置,证书,角色等,因此总的ARM文件要大得多。

{
    "name": "[parameters('appServiceName')]",
    "type": "Microsoft.Web/sites",
    "apiVersion": "2018-11-01",
    "location": "[parameters('location')]",
    "tags": {
        "displayName": "AppService"
    },
    "identity": {
        "type": "SystemAssigned"
    },
    "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": "[variables('siteConfig')]",
        "hostNameSslStates": [
          {
            "name": "[parameters('websiteCustomDomainName')]",
            "sslState": "SniEnabled",
            "thumbprint": "[reference(resourceId('Microsoft.Web/certificates', variables('certificateName'))).Thumbprint]",
            "toUpdate": true
          }
        ]
    }
}

问题是某些应用程序服务没有自定义域,并且不需要hostNameSslStates属性,并且我无法在模板中找到解决方案。我可以使用一个名为“ hostNameSslState”的变量,但无法调节该属性。如果我可以将hostNameSslStates指定为单独的资源,则可以解决我的问题,但我无法弄清楚。

azure-resource-manager
1个回答
0
投票

您可以这样做:

"hostNameSslStates": "[if(something, variables('sslStuff'), json('[]'))]"

然后在您的变量中定义sslStuff

"sslStuff": [
    {
        "name": "[parameters('websiteCustomDomainName')]",
        "sslState": "SniEnabled",
        "thumbprint": "[reference(resourceId('Microsoft.Web/certificates', variables('certificateName'))).Thumbprint]",
        "toUpdate": true
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.