diff --git a/201-asev2-ilb-with-web-app/README.md b/201-asev2-ilb-with-web-app/README.md new file mode 100644 index 000000000000..6b981c13ce15 --- /dev/null +++ b/201-asev2-ilb-with-web-app/README.md @@ -0,0 +1,10 @@ +# Create an App Service Environment v2 with an ILB Address and a Hosting Plan with a Azure WebApp + + + + + + + + +For more details on App Service Environments, see the [Introduction to App Service Environments](https://docs.microsoft.com/en-us/azure/app-service/app-service-environment/intro). diff --git a/201-asev2-ilb-with-web-app/azuredeploy.json b/201-asev2-ilb-with-web-app/azuredeploy.json new file mode 100644 index 000000000000..dc053202e5dd --- /dev/null +++ b/201-asev2-ilb-with-web-app/azuredeploy.json @@ -0,0 +1,167 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", + "contentVersion": "1.0.0.0", + "parameters": { + "aseName": { + "type": "string", + "metadata": { + "description": "Name of the App Service Environment" + } + }, + "vnetResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name that contains the vnet" + } + }, + "vnetResourceName": { + "type": "string", + "metadata": { + "description": "The name of the vnet" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "Subnet name that will contain the App Service Environment" + } + }, + "aseLocation": { + "type": "string", + "defaultValue": "West US", + "metadata": { + "description": "Specific parameter used because the ASE api can't handle the resource group location" + } + }, + "internalLoadBalancingMode": { + "type": "int", + "defaultValue": 3, + "allowedValues": [ 0, 1, 2, 3 ], + "metadata": { + "description": "0 = public VIP only, 1 = only ports 80/443 are mapped to ILB VIP, 2 = only FTP ports are mapped to ILB VIP, 3 = both ports 80/443 and FTP ports are mapped to an ILB VIP." + } + }, + "dnsSuffix": { + "type": "string", + "metadata": { + "description": "Used when deploying an ILB enabled ASE. Set this to the root domain associated with the ASE. For example: contoso.com" + } + }, + "siteName": { + "type": "string", + "metadata": { + "description": "The name of the web app that will be created." + } + }, + "appServicePlanName": { + "type": "string", + "metadata": { + "description": "The name of the App Service plan to use for hosting the web app." + } + }, + "owner": { + "type": "string", + "metadata": { + "description": "The owner of the resource will be used for tagging." + } + }, + "workerPool": { + "type": "string", + "allowedValues": [ + "1", + "2", + "3" + ], + "defaultValue": "1", + "metadata": { + "description": "Defines which worker pool's (WP1, WP2 or WP3) resources will be used for the app service plan." + } + }, + "numberOfWorkersFromWorkerPool": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Defines the number of workers from the worker pool that will be used by the app service plan." + } + } + }, + "variables": { + "vnetID": "[resourceId(parameters('vnetResourceGroupName'), 'Microsoft.Network/virtualNetworks', parameters('vnetResourceName'))]" + }, + "resources": [ + { + "apiVersion": "2016-09-01", + "type": "Microsoft.Web/hostingEnvironments", + "name": "[parameters('aseName')]", + "kind": "ASEV2", + "location": "[parameters('aseLocation')]", + "tags": { + "displayName": "ASE Environment", + "usage": "Hosting PaaS applications", + "category": "Environment", + "owner": "[parameters('owner')]" + }, + "properties": { + "name": "[parameters('aseName')]", + "location": "[parameters('aseLocation')]", + "ipSslAddressCount": 0, + "internalLoadBalancingMode": "[parameters('internalLoadBalancingMode')]", + "dnsSuffix": "[parameters('dnsSuffix')]", + "virtualNetwork": { + "Id": "[variables('vnetID')]", + "Subnet": "[parameters('subnetName')]" + } + } + }, + { + "apiVersion": "2016-09-01", + "name": "[parameters('appServicePlanName')]", + "type": "Microsoft.Web/serverfarms", + "location": "[parameters('aseLocation')]", + "tags": { + "displayName": "ASE Hosting Plan", + "usage": "Hosting Plan within ASE", + "category": "Hosting", + "owner": "[parameters('owner')]" + }, + "dependsOn": [ + "[concat('Microsoft.Web/hostingEnvironments/',parameters('aseName'))]" + ], + "properties": { + "name": "[parameters('appServicePlanName')]", + "hostingEnvironmentProfile": { + "id": "[resourceId('Microsoft.Web/hostingEnvironments/',parameters('aseName'))]" + } + }, + "sku": { + "name": "[concat('I',parameters('workerPool'))]", + "tier": "Isolated", + "size": "[concat('I',parameters('workerPool'))]", + "family": "I", + "capacity": "[parameters('numberOfWorkersFromWorkerPool')]" + } + }, + { + "apiVersion": "2016-08-01", + "name": "[parameters('siteName')]", + "type": "Microsoft.Web/sites", + "location": "[resourceGroup().location]", + "tags": { + "displayName": "ASE Web App", + "usage": "Web App Hosted within ASE", + "category": "Web App", + "owner": "[parameters('owner')]" + }, + "dependsOn": [ + "[concat('Microsoft.Web/serverFarms/',parameters('appServicePlanName'))]" + ], + "properties": { + "name": "[parameters('siteName')]", + "serverFarmId": "[resourceId('Microsoft.Web/serverFarms',parameters('appServicePlanName'))]", + "hostingEnvironmentProfile": { + "id": "[resourceId('Microsoft.Web/hostingEnvironments/', parameters('aseName'))]" + } + } + } + ] +} diff --git a/201-asev2-ilb-with-web-app/azuredeploy.parameters.json b/201-asev2-ilb-with-web-app/azuredeploy.parameters.json new file mode 100644 index 000000000000..dd90f30df15b --- /dev/null +++ b/201-asev2-ilb-with-web-app/azuredeploy.parameters.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json", + "contentVersion": "1.0.0.0", + "parameters": { + "aseName": { + "value": "GEN-UNIQUE" + }, + "vnetResourceName": { + "value": "GET-PREREQ-existingVnetName" + }, + "vnetResourceGroupName": { + "value": "GEN-VNET-RESOURCEGROUP-NAME" + }, + "subnetName": { + "value": "GET-PREREQ-existingSubnetName" + }, + "dnsSuffix": { + "value": "GEN-UNIQUE-10" + }, + "siteName": { + "value": "GEN-UNIQUE" + }, + "appServicePlanName": { + "value": "GEN-UNIQUE" + }, + "owner": { + "value": "Owner" + } + } +} diff --git a/201-asev2-ilb-with-web-app/metadata.json b/201-asev2-ilb-with-web-app/metadata.json new file mode 100644 index 000000000000..b0650bb0ed72 --- /dev/null +++ b/201-asev2-ilb-with-web-app/metadata.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://aka.ms/azure-quickstart-templates-metadata-schema#", + "itemDisplayName": "App Service Environment with Hosting Plan and Azure WebApp", + "description": "Creates an App Service Environment v2 with an ILB Address in a existing virtual network that will be privately availible. The App Service Environment will contain a Hosting Plan and a Azure Web App", + "summary": "App Service Environment v2 - ILB with Hosting Plan and Azure WebApp", + "githubUsername": "maikvandergaag", + "dateUpdated": "2018-04-06" +} diff --git a/201-asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.json b/201-asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.json new file mode 100644 index 000000000000..2f5d4bb8fe93 --- /dev/null +++ b/201-asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.json @@ -0,0 +1,47 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": { + "existingVirtualNetworkName": "vnet", + "existingSubnetName": "subnet-1" + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('existingVirtualNetworkName')]", + "apiVersion": "2018-02-01", + "location": "West Europe", + "comments": "Virtual network for overall solution", + "tags": { + "displayName": "Virtual Network" + }, + "dependsOn": [], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "10.0.0.0/16" + ] + }, + "subnets": [ + { + "name": "[variables('existingSubnetName')]", + "properties": { + "addressPrefix": "10.0.1.0/24" + } + } + ] + } + } + ], + "outputs": { + "existingVnetName": { + "type": "string", + "value": "[variables('existingVirtualNetworkName')]" + }, + "existingSubnetName": { + "type": "string", + "value": "[variables('existingSubnetName')]" + } + } +} diff --git a/201-asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.parameters.json b/201-asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.parameters.json new file mode 100644 index 000000000000..0c3975662be1 --- /dev/null +++ b/201-asev2-ilb-with-web-app/prereqs/prereq.azuredeploy.parameters.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + } +} \ No newline at end of file