Självstudie: Distribuera en lokal ARM-mall

Lär dig hur du distribuerar en Azure Resource Manager-mall (ARM-mall) från din lokala dator. Det tar cirka 8 minuter att slutföra.

Den här självstudien är den första i en serie. När du går igenom serien modulariserar du mallen genom att skapa en länkad mall, du lagrar den länkade mallen i ett lagringskonto och skyddar den länkade mallen med hjälp av SAS-token och lär dig hur du skapar en DevOps-pipeline för att distribuera mallar. Den här serien fokuserar på malldistribution. Om du vill lära dig mallutveckling kan du läsa självstudierna för nybörjare.

Hämta verktyg

Vi börjar med att se till att du har de verktyg du behöver för att distribuera mallar.

Kommandoradsdistribution

Du behöver antingen Azure PowerShell eller Azure CLI för att distribuera mallen. Installationsanvisningarna finns i:

När du har installerat antingen Azure PowerShell eller Azure CLI kontrollerar du att du loggar in för första gången. Mer information finns i Logga in – PowerShell eller Logga in – Azure CLI.

Redigerare (valfritt)

Mallar är JSON-filer. Om du vill granska/redigera mallar behöver du en bra JSON-redigerare. Vi rekommenderar Visual Studio Code med tillägget Resource Manager Tools. Om du behöver installera de här verktygen kan du läsa Snabbstart: Skapa ARM-mallar med Visual Studio Code.

Granska mall

Mallen distribuerar ett lagringskonto, en App Service-plan och en webbapp. Om du är intresserad av att skapa mallen kan du gå igenom självstudien om snabbstartsmallar. Det krävs dock inte för att slutföra den här självstudien.

{
  "$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]"
    }
  }
}

Viktigt

Lagringskontonamn måste vara unika, mellan 3 och 24 tecken långa och endast använda siffror och gemener . Exempelmallens storageAccountName variabel kombinerar projectName parameterns maximala 11 tecken med ett uniqueString-värde på 13 tecken.

Spara en kopia av mallen på din lokala dator med .json-tillägget , till exempel azuredeploy.json. Du distribuerar den här mallen senare i självstudien.

Logga in på Azure

Logga in med dina Azure-autentiseringsuppgifter för att börja arbeta med Azure PowerShell/Azure CLI för att distribuera en mall.

Connect-AzAccount

Om du har flera Azure-prenumerationer väljer du den prenumeration som du vill använda. Ersätt [SubscriptionID/SubscriptionName] och hakparenteserna [] med din prenumerationsinformation:

Set-AzContext [SubscriptionID/SubscriptionName]

Skapa resursgrupp

När du distribuerar en mall anger du en resursgrupp som ska innehålla resurserna. Innan du kör distributionskommandot skapar du resursgruppen med antingen Azure CLI eller Azure PowerShell. Välj flikarna i följande kodavsnitt för att välja mellan Azure PowerShell och Azure CLI. CLI-exemplen i den här artikeln är skrivna för Bash-gränssnittet.

$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"

Distribuera mallen

Använd ett eller båda distributionsalternativen för att distribuera mallen.

$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

Mer information om hur du distribuerar mallar med hjälp av Azure PowerShell finns i Distribuera resurser med ARM-mallar och Azure PowerShell.

Rensa resurser

Rensa de resurser som du har distribuerat genom att ta bort resursgruppen.

  1. I Azure Portal väljer du Resursgrupp på den vänstra menyn.
  2. Ange resursgruppens namn i fältet Filtrera efter namn.
  3. Välj resursgruppens namn.
  4. Välj Ta bort resursgrupp på den översta menyn.

Nästa steg

Du har lärt dig hur du distribuerar en lokal mall. I nästa självstudie separerar du mallen i en huvudmall och en länkad mall och lär dig hur du lagrar och skyddar den länkade mallen.