Tutorial: Implantar um modelo do ARM local
Saiba como implantar um modelo do ARM (modelo do Azure Resource Manager) por meio do computador local. Esse procedimento demora cerca de 8 minutos para ser concluído.
Este tutorial é o primeiro de uma série. À medida que avança na série, você modulariza o modelo criando um modelo vinculado, armazena o modelo vinculado em uma conta de armazenamento e protege-o usando o token SAS, além de aprender a criar um pipeline de DevOps para implantar modelos. Esta série se concentra na implantação de modelo. Se desejar aprender sobre o desenvolvimento de modelos, confira os tutoriais de iniciantes.
Obter ferramentas
Vamos começar verificando se você tem as ferramentas necessárias para implantar modelos.
Implantação de linha de comando
Você precisa ter o Azure PowerShell ou a CLI do Azure para implantar o modelo. Para obter as instruções de instalação, confira:
- Instale o Azure PowerShell
- Instalar a CLI do Azure no Windows
- Instalar a CLI do Azure no Linux
- Instalar a CLI do Azure no macOS
Depois de instalar o Azure PowerShell ou a CLI do Azure, é preciso que você entre pela primeira vez. Para obter ajuda, confira Entrar – PowerShell ou Entrar – CLI do Azure.
Editor (opcional)
Modelos são arquivos JSON. Para examinar/editar modelos, você precisa de um bom editor de JSON. Recomendamos o Visual Studio Code com a extensão Ferramentas do Resource Manager. Se precisar instalar essas ferramentas, confira Guia de Início Rápido: Criar modelos do ARM com o Visual Studio Code.
Examinar modelo
O modelo implanta uma conta de armazenamento, um plano do serviço de aplicativo e um aplicativo Web. Se estiver interessado em criar o modelo, acompanhe o tutorial sobre Modelos de início rápido. No entanto, isso não é necessário para concluir este tutorial.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"projectName": {
"type": "string",
"minLength": 3,
"maxLength": 11,
"metadata": {
"description": "Specify a project name that is used to generate resource names."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Specify a location for the resources."
}
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
],
"metadata": {
"description": "Specify the storage account type."
}
},
"linuxFxVersion": {
"type": "string",
"defaultValue": "php|7.0",
"metadata": {
"description": "Specify the Runtime stack of current web app"
}
}
},
"variables": {
"storageAccountName": "[format('{0}{1}', parameters('projectName'), uniqueString(resourceGroup().id))]",
"webAppName": "[format('{0}WebApp', parameters('projectName'))]",
"appServicePlanName": "[format('{0}Plan', parameters('projectName'))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-09-01",
"name": "[variables('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "B1",
"tier": "Basic",
"size": "B1",
"family": "B",
"capacity": 1
},
"kind": "linux",
"properties": {
"perSiteScaling": false,
"reserved": true,
"targetWorkerCount": 0,
"targetWorkerSizeId": 0
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-09-01",
"name": "[variables('webAppName')]",
"location": "[parameters('location')]",
"kind": "app",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
"siteConfig": {
"linuxFxVersion": "[parameters('linuxFxVersion')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
]
}
],
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2023-01-01').primaryEndpoints]"
}
}
}
Importante
Os nomes das contas de armazenamento devem ser exclusivos, ter entre 3 e 24 caracteres e usar apenas números e letras minúsculas. A variável storageAccountName
do modelo de exemplo combina o máximo de 11 caracteres do parâmetro projectName
com um valor de uniqueString de 13 caracteres.
Salve uma cópia do modelo no computador local com a extensão .json, por exemplo, azuredeploy.json. Você implantará esse modelo posteriormente no tutorial.
Entrar no Azure
Para começar a trabalhar com o Azure PowerShell/a CLI do Azure para implantar um modelo, entre com suas credenciais do Azure.
Connect-AzAccount
Se tiver várias assinaturas do Azure, selecione a que deseja usar. Substitua [SubscriptionID/SubscriptionName]
e os colchetes []
pelas informações da sua assinatura:
Set-AzContext [SubscriptionID/SubscriptionName]
Criar grupo de recursos
Ao implantar um modelo, você especificará um grupo de recursos que conterá os recursos. Antes de executar o comando de implantação, crie o grupo de recursos com a CLI do Azure ou o Azure PowerShell. Selecione as guias na seção de código a seguir para escolher entre o Azure PowerShell e a CLI do Azure. Os exemplos de CLI neste artigo são escritos para o shell do Bash.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource and resource group names"
$resourceGroupName = "${projectName}rg"
New-AzResourceGroup `
-Name $resourceGroupName `
-Location "Central US"
Implantar modelo
Use uma ou ambas as opções de implantação para implantar o modelo.
$projectName = Read-Host -Prompt "Enter the same project name"
$templateFile = Read-Host -Prompt "Enter the template file path and file name"
$resourceGroupName = "${projectName}rg"
New-AzResourceGroupDeployment `
-Name DeployLocalTemplate `
-ResourceGroupName $resourceGroupName `
-TemplateFile $templateFile `
-projectName $projectName `
-verbose
Para saber mais sobre como implantar o modelo usando o Azure PowerShell, confira Implantar recursos com modelos do ARM e o Azure PowerShell.
Limpar os recursos
Limpe os recursos que você implantou excluindo o grupo de recursos.
- No portal do Azure, escolha Grupos de recursos do menu à esquerda.
- No campo Filtrar por nome, insira o nome do grupo de recursos.
- Selecione o nome do grupo de recursos.
- Escolha Excluir grupo de recursos no menu superior.
Próximas etapas
Você aprendeu a implantar um modelo local. No próximo tutorial, separe o modelo em um modelo principal e um modelo vinculado e saiba como armazenar e proteger este último.