Criar um aplicativo do Serviço de Aplicativo e implantar um ponto de extremidade privado usando um modelo do Azure Resource Manager
Neste início rápido, você usa um modelo do Azure Resource Manager (ARM) para criar um aplicativo Web e expô-lo com um ponto de extremidade privado.
Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo utiliza sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.
Pré-requisito
Você precisa de uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Criar um ponto final privado
Este modelo cria um ponto de extremidade privado para um aplicativo Web do Azure.
Rever o modelo
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"virtualNetwork_name": {
"type": "String",
"metadata":{
"description": "Name of the VNet"
}
},
"serverFarm_name": {
"type": "String",
"defaultValue": "ServerFarm1",
"metadata":{
"description": "Name of the Web Farm"
}
},
"site_name": {
"type": "String",
"metadata":{
"description": "Web App name must be unique DNS name worldwide"
}
},
"virtualNetwork_CIDR": {
"type": "String",
"defaultValue": "10.200.0.0/16",
"metadata":{
"description": "CIDR of your VNet"
}
},
"subnet1_name": {
"type": "String",
"metadata":{
"description": "Name of the Subnet"
}
},
"subnet1_CIDR": {
"type": "String",
"defaultValue": "10.200.1.0/24",
"metadata":{
"description": "CIDR of your subnet"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata":{
"description": "Location for all resources."
}
},
"SKU_name": {
"type": "String",
"defaultValue": "P1v2",
"metadata":{
"description": "SKU name, must be minimum P1v2"
}
},
"SKU_tier": {
"type": "String",
"defaultValue": "PremiumV2",
"metadata":{
"description": "SKU tier, must be Premium"
}
},
"SKU_size": {
"type": "String",
"defaultValue": "P1v2",
"metadata":{
"description": "SKU size, must be minimum P1v2"
}
},
"SKU_family": {
"type": "String",
"defaultValue": "P1v2",
"metadata":{
"description": "SKU family, must be minimum P1v2"
}
},
"privateEndpoint_name": {
"type": "string",
"metadata":{
"description": "Name of your Private Endpoint"
}
},
"privateLinkConnection_name": {
"type": "string",
"metadata":{
"description": "Link name between your Private Endpoint and your Web App"
}
},
"privateDNSZone_name": {
"type": "string",
"defaultValue": "privatelink.azurewebsites.net",
"metadata":{
"description": "Name must be privatelink.azurewebsites.net"
}
},
"webapp_dns_name": {
"type": "string",
"defaultValue": ".azurewebsites.net",
"metadata":{
"description": "Name must be privatelink.azurewebsites.net"
}
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2020-04-01",
"name": "[parameters('virtualNetwork_name')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('virtualNetwork_CIDR')]"
]
}
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2020-04-01",
"name": "[concat(parameters('virtualNetwork_name'),'/', parameters('subnet1_name'))]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
],
"properties": {
"addressPrefix": "[parameters('subnet1_CIDR')]",
"privateEndpointNetworkPolicies": "Disabled"
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2019-08-01",
"name": "[parameters('serverFarm_name')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('SKU_name')]",
"tier": "[parameters('SKU_tier')]",
"size": "[parameters('SKU_size')]",
"family": "[parameters('SKU_family')]",
"capacity": 1
},
"kind": "app"
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2019-08-01",
"name": "[parameters('site_name')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('serverFarm_name'))]"
],
"kind": "app",
"properties": {
"enabled": true,
"hostNameSslStates": [
{
"name": "[concat(parameters('site_name'), parameters('webapp_dns_name'))]",
"sslState": "Disabled",
"hostType": "Standard"
},
{
"name": "[concat(parameters('site_name'), '.scm', parameters('webapp_dns_name'))]",
"sslState": "Disabled",
"hostType": "Repository"
}
],
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverFarm_name'))]"
}
},
{
"type": "Microsoft.Web/sites/config",
"apiVersion": "2019-08-01",
"name": "[concat(parameters('site_name'), '/web')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
],
"properties": {
"ftpsState": "AllAllowed"
}
},
{
"type": "Microsoft.Web/sites/hostNameBindings",
"apiVersion": "2019-08-01",
"name": "[concat(parameters('site_name'), '/', parameters('site_name'), parameters('webapp_dns_name'))]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
],
"properties": {
"siteName": "[parameters('site_name')]",
"hostNameType": "Verified"
}
},
{
"type": "Microsoft.Network/privateEndpoints",
"apiVersion": "2019-04-01",
"name": "[parameters('privateEndpoint_name')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('site_name'))]",
"[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetwork_name'), parameters('subnet1_name'))]"
],
"properties": {
"subnet": {
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetwork_name'), parameters('subnet1_name'))]"
},
"privateLinkServiceConnections": [
{
"name": "[parameters('privateLinkConnection_name')]",
"properties": {
"privateLinkServiceId": "[resourceId('Microsoft.Web/sites', parameters('site_name'))]",
"groupIds": [
"sites"
]
}
}
]
}
},
{
"type": "Microsoft.Network/privateDnsZones",
"apiVersion": "2018-09-01",
"name": "[parameters('privateDNSZone_name')]",
"location": "global",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
]
},
{
"type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
"apiVersion": "2018-09-01",
"name": "[concat(parameters('privateDNSZone_name'), '/', parameters('privateDNSZone_name'), '-link')]",
"location": "global",
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', parameters('privateDNSZone_name'))]",
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
],
"properties": {
"registrationEnabled": false,
"virtualNetwork": {
"id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetwork_name'))]"
}
}
},
{
"type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
"apiVersion": "2020-03-01",
"name": "[concat(parameters('privateEndpoint_name'),'/dnsgroupname')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', parameters('privateDNSZone_name'))]",
"[resourceId('Microsoft.Network/privateEndpoints' , parameters('privateEndpoint_name'))]"
],
"properties": {
"privateDnsZoneConfigs": [
{
"name": "config1",
"properties": {
"privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', parameters('privateDNSZone_name'))]"
}
}
]
}
}
]
}
Implementar o modelo
Veja como implantar o modelo do Azure Resource Manager no Azure:
- Para entrar no Azure e abrir o modelo, selecione este link: Implantar no Azure. O modelo cria a rede virtual, o aplicativo Web, o ponto de extremidade privado e a zona DNS privada.
- Selecione ou crie seu grupo de recursos.
- Insira o nome do seu aplicativo Web, o plano do Serviço de Aplicativo do Azure e o ponto de extremidade privado.
- Leia a declaração sobre os termos e condições. Se concordar, selecione Concordo com os termos e condições acima indicados Compra>. A implantação pode levar vários minutos para ser concluída.
Clean up resources (Limpar recursos)
Quando não precisar mais dos recursos criados com o ponto de extremidade privado, exclua o grupo de recursos. Isso remove o ponto de extremidade privado e todos os recursos relacionados.
Para excluir o grupo de recursos, chame o Remove-AzResourceGroup
cmdlet:
Remove-AzResourceGroup -Name <your resource group name>
Próximos passos
- Você pode encontrar mais modelos do Azure Resource Manager para aplicativos Web do Serviço de Aplicativo do Azure nos exemplos de modelo ARM.