Partilhar via


Tutorial: Implementar um modelo arm local

Saiba como implementar um modelo do Azure Resource Manager (modelo arm) a partir do seu computador local. Demora cerca de 8 minutos a concluir.

Este tutorial é o primeiro de uma série. À medida que avança na série, modulariza o modelo ao criar um modelo ligado, armazena o modelo ligado numa conta de armazenamento e protege o modelo ligado com o token SAS e aprende a criar um pipeline de DevOps para implementar modelos. Esta série centra-se na implementação de modelos. Se quiser aprender a desenvolver modelos, veja os tutoriais para principiantes.

Obter ferramentas

Vamos começar por garantir que tem as ferramentas necessárias para implementar modelos.

Implementação da linha de comandos

Precisa de Azure PowerShell ou da CLI do Azure para implementar o modelo. Para obter as instruções de instalação, consulte:

Depois de instalar Azure PowerShell ou a CLI do Azure, certifique-se de que inicia sessão pela primeira vez. Para obter ajuda, veja Iniciar sessão - PowerShell ou Iniciar sessão - CLI do Azure.

Editor (opcional)

Os modelos são ficheiros JSON. Para rever/editar modelos, precisa de um bom editor JSON. Recomendamos o Visual Studio Code com a extensão Resource Manager Tools. Se precisar de instalar estas ferramentas, veja Início Rápido: Criar modelos do ARM com o Visual Studio Code.

Rever modelo

O modelo implementa uma conta de armazenamento, um plano do serviço de aplicações e uma aplicação Web. Se estiver interessado em criar o modelo, pode ver o tutorial sobre modelos de Início Rápido. No entanto, 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 têm de ser exclusivos, com entre 3 e 24 carateres de comprimento, e utilizar apenas números e letras minúsculas . A variável do modelo de storageAccountName exemplo combina o projectName máximo de 11 carateres do parâmetro com um valor uniqueString de 13 carateres.

Guarde uma cópia do modelo no seu computador local com a extensão .json , por exemplo, azuredeploy.json. Irá implementar este modelo mais adiante no tutorial.

Iniciar sessão no Azure

Para começar a trabalhar com Azure PowerShell/CLI do Azure para implementar um modelo, inicie sessão com as 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 parênteses [] retos pelas informações da subscrição:

Set-AzContext [SubscriptionID/SubscriptionName]

Criar grupo de recursos

Quando implementa um modelo, especifica um grupo de recursos que irá conter os recursos. Antes de executar o comando de implementação, crie o grupo de recursos com a CLI do Azure ou o Azure PowerShell. Selecione os separadores na secção de código seguinte para escolher entre Azure PowerShell e a CLI do Azure. Os exemplos da CLI neste artigo são escritos para a 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"

Implementar o modelo

Utilize uma ou ambas as opções de implementação para implementar 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 implementar o modelo com Azure PowerShell, veja Implementar recursos com modelos arm e Azure PowerShell.

Limpar os recursos

Limpe os recursos que implementou ao eliminar o grupo de recursos.

  1. Na portal do Azure, selecione Grupo de recursos no menu esquerdo.
  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.

Passos seguintes

Aprendeu a implementar um modelo local. No próximo tutorial, irá separar o modelo num modelo principal e num modelo ligado e aprender a armazenar e proteger o modelo ligado.