Search code examples
azureazure-rm-template

Deploy a web app and custom domain using bicep template


While deploying it to azure portal it's showing an error microsoft.web/serverforms

I have tried to deploy a web app and custom domain to azure portal using arm template. I want to deploy a web app with custom domain.


Solution

    • I have deploy a web app with custom domain using below Steps.

    • open Azure portal and search for custom deployment as use the below code.

    enter image description here

    Thanks @akhilthomsa011 for arm template.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "location": {
                "type": "string",
                "defaultValue": "[resourceGroup().location]",
                "metadata": {
                    "description": "Location for all resources."
                }
            },
            "webAppName": {
                "type": "string",
                "metadata": {
                    "description": "The name of the web app that you wish to create."
                }
            },
            "customHostname": {
                "type": "string",
                "metadata": {
                    "description": "The custom hostname that you wish to add."
                }
            },
            "existingKeyVaultId": {
                "type": "string",
                "defaultValue": "",
                "metadata": {
                    "description": "Existing Key Vault resource Id for the SSL certificate, leave this blank if not enabling SSL"
                }
            },
            "existingKeyVaultSecretName": {
                "type": "string",
                "defaultValue": "",
                "metadata": {
                    "description": "Key Vault Secret that contains a PFX certificate, leave this blank if not enabling SSL"
                }
            }
        },
        "variables": {
            "appServicePlanName": "[concat(parameters('webAppName'),'-asp-', uniquestring(resourceGroup().id))]",
            "certificateName": "[concat(parameters('webAppName'),'-cert')]",
            "enableSSL": "[not(empty(parameters('existingKeyVaultId')))]"
        },
        "resources": [
            {
                "type": "Microsoft.Web/serverfarms",
                "apiVersion": "2019-08-01",
                "name": "[variables('appServicePlanName')]",
                "location": "[parameters('location')]",
                "properties": {
                    "name": "[variables('appServicePlanName')]"
                },
                "sku": {
                    "name": "P1",
                    "tier": "Premium",
                    "size": "1",
                    "family": "P",
                    "capacity": "1"
                }
            },
            {
                "type": "Microsoft.Web/sites",
                "apiVersion": "2019-08-01",
                "name": "[parameters('webAppName')]",
                "location": "[parameters('location')]",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]"
                ],
                "properties": {
                    "name": "[parameters('webAppName')]",
                    "serverFarmId": "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]"
                }
            },
            {
                "condition": "[variables('enableSSL')]",
                "type": "Microsoft.Web/certificates",
                "apiVersion": "2019-08-01",
                "name": "[variables('certificateName')]",
                "location": "[parameters('location')]",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/sites', parameters('webAppName'))]"
                ],
                "properties": {
                    "keyVaultId": "[parameters('existingKeyVaultId')]",
                    "keyVaultSecretName": "[parameters('existingKeyVaultSecretName')]",
                    "serverFarmId": "[resourceId('Microsoft.Web/serverFarms', variables('appServicePlanName'))]"
                }
            },
            {
                "type": "Microsoft.Web/sites/hostnameBindings",
                "name": "[concat(parameters('webAppName'), '/', parameters('customHostname'))]",
                "apiVersion": "2019-08-01",
                "location": "[parameters('location')]",
                "dependsOn": [
                    "[resourceId('Microsoft.Web/certificates', variables('certificateName'))]"
                ],
                "properties": {
                    "sslState": "[if(variables('enableSSL'), 'SniEnabled', json('null'))]",
                    "thumbprint": "[if(variables('enableSSL'), reference(resourceId('Microsoft.Web/certificates', variables('certificateName'))).Thumbprint, json('null'))]"
                }
            }
        ]
    }
    
    
    • Fill the details as shown below and click on review + Create.

    enter image description here

    • After deployed to azure portal the go to app service and -> custom domain as below.

    enter image description here

    enter image description here