Partilhar via


Tutorial: Implantar um modelo ARM local

Saiba como implantar um modelo do Azure Resource Manager (modelo ARM) de sua máquina local. Demora cerca de 8 minutos a concluir.

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, protege o modelo vinculado usando o token SAS e aprende a criar um pipeline de DevOps para implantar modelos. Esta série se concentra na implantação de modelos. Se você quiser aprender o desenvolvimento de modelos, consulte os tutoriais para iniciantes.

Obter ferramentas

Certifique-se de ter as ferramentas necessárias para implantar modelos.

Implantação de linha de comando

Para implantar o modelo, você precisa do Azure PowerShell ou da CLI do Azure. Para obter instruções de instalação, consulte:

Depois de instalar o Azure PowerShell ou a CLI do Azure, entre pela primeira vez. Para obter ajuda, consulte Entrar - PowerShell ou Entrar - CLI do Azure.

Editor (Opcional)

Os modelos são arquivos JSON. Para revisar ou editar modelos, você precisa de um bom editor JSON. Recomendamos usar o Visual Studio Code com a extensão Resource Manager Tools. Se você precisar instalar essas ferramentas, consulte Guia de início rápido: criar modelos ARM com o Visual Studio Code.

Modelo de revisão

O modelo implanta uma conta de armazenamento, um plano de serviço de aplicativo e um aplicativo Web. Se você estiver interessado em criar o modelo, consulte Tutorial de modelos de início rápido. No entanto, você não precisa criar o modelo 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 do modelo de storageAccountName exemplo combina o projectName máximo de 11 caracteres do parâmetro com um valor uniqueString de 13 caracteres.

Salve uma cópia do modelo em seu computador local com a extensão .json , por exemplo, azuredeploy.json. Você implanta esse modelo posteriormente no tutorial.

Iniciar sessão no Azure

Para começar a trabalhar com o Azure PowerShell/Azure CLI para implantar um modelo, entre com suas credenciais do Azure.

Connect-AzAccount

Se tiver várias subscrições do Azure, selecione a subscrição que pretende utilizar. 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ê especifica um grupo de recursos para os recursos. Antes de executar o comando de implementação, crie o grupo de recursos com a CLI do Azure ou o Azure PowerShell. Para escolher entre o Azure PowerShell e a CLI do Azure, selecione as guias na seção de código a seguir. Os exemplos de CLI neste artigo foram escritos para o shell 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"

Implementar o 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 modelos usando o Azure PowerShell, consulte Implantar recursos com modelos ARM e Azure PowerShell.

Clean up resources (Limpar recursos)

Para limpar os recursos implantados, exclua o grupo de recursos.

  1. No portal do Azure, selecione Grupo de recursos no menu à esquerda.
  2. Introduza o nome do grupo de recursos no campo Filtrar por nome.
  3. Selecione o nome do grupo de recursos.
  4. Selecione Eliminar grupo de recursos no menu superior.

Próximos passos

Você aprendeu como implantar um modelo local. No próximo tutorial, você separa o modelo em um modelo principal e um modelo vinculado. Você também aprende a armazenar e proteger o modelo vinculado.