Tutorial: Bereitstellen einer lokalen ARM-Vorlage

Erfahren Sie, wie Sie eine Azure Resource Manager-Vorlage (ARM-Vorlage) von Ihrem lokalen Computer bereitstellen. Dieser Schritt dauert ungefähr 8 Minuten.

Dieses Tutorial ist das erste einer Reihe. Während Sie die Reihe durchlaufen, modularisieren Sie die Vorlage, indem Sie eine verknüpfte Vorlage erstellen, die verknüpfte Vorlage in einem Speicherkonto speichern und sie mit dem SAS-Token sichern. Sie erfahren außerdem, wie Sie eine DevOps-Pipeline zum Bereitstellen von Vorlagen erstellen. Diese Reihe konzentriert sich auf die Vorlagenbereitstellung. Wenn Sie sich mit der Vorlagenentwicklung vertraut machen möchten, verwenden Sie die Tutorials für Anfänger.

Erforderliche Tools

Zunächst sorgen wir dafür, dass Sie über die Tools verfügen, die Sie zum Bereitstellen von Vorlagen benötigen.

Befehlszeilenbereitstellung

Zum Bereitstellen der Vorlage benötigen Sie entweder Azure PowerShell oder die Azure CLI. Die Installationsanweisungen finden Sie unter:

Melden Sie sich nach der Installation von Azure PowerShell oder der Azure CLI zum ersten Mal an. Hilfe finden Sie unter Anmelden –PowerShell oder Anmelden – Azure CLI.

Editor (optional)

Vorlagen sind JSON-Dateien. Zum Bewerten/Bearbeiten von Vorlagen benötigen Sie einen guten JSON-Editor. Wir empfehlen Visual Studio Code mit der Erweiterung „Azure Resource Manager-Tools“. Informationen zum Installieren dieser Tools finden Sie bei Bedarf unter Schnellstart: Erstellen von ARM-Vorlagen mit Visual Studio Code.

Überprüfen der Vorlage

Die Vorlage stellt ein Speicherkonto, einen App Service-Plan und eine Web-App bereit. Wenn Sie die Vorlage erstellen möchten, können Sie das Tutorial zu Schnellstartvorlagen durcharbeiten. Für den Abschluss dieses Tutorials ist es jedoch nicht erforderlich.

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

Wichtig

Speicherkontonamen müssen eindeutig und zwischen 3 und 24 Zeichen lang sein, und sie dürfen nur Zahlen und Kleinbuchstaben enthalten. Die Variable storageAccountName der Beispielvorlage kombiniert das Maximum des Parameters projectName von 11 Zeichen mit einem uniqueString-Wert von 13 Zeichen.

Speichern Sie eine Kopie der Vorlage mit der Erweiterung JSON auf dem lokalen Computer, z. B. azurebereitstellung.json. Diese Vorlage können Sie später im Tutorial bereitstellen.

Anmelden bei Azure

Melden Sie sich mit Ihren Azure-Anmeldeinformationen an, um Azure PowerShell/Azure CLI zum Bereitstellen einer Vorlage zu verwenden.

Connect-AzAccount

Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie das Abonnement aus, das Sie verwenden möchten. Ersetzen Sie [SubscriptionID/SubscriptionName] und die eckigen Klammern [] durch Ihre Abonnementinformationen:

Set-AzContext [SubscriptionID/SubscriptionName]

Ressourcengruppe erstellen

Beim Bereitstellen einer Vorlage geben Sie eine Ressourcengruppe an, die die bereitgestellten Ressourcen enthalten soll. Erstellen Sie die Ressourcengruppe vor dem Ausführen des Bereitstellungsbefehls entweder mit der Azure CLI oder Azure PowerShell. Wählen Sie die Registerkarten im folgenden Codeabschnitt aus, um zwischen Azure PowerShell und der Azure CLI zu wählen. Die CLI-Beispiele in diesem Artikel sind für die Bash-Shell geschrieben.

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

Bereitstellen der Vorlage

Verwenden Sie eine oder beide Bereitstellungsoptionen, um die Vorlage bereitzustellen.

$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

Weitere Informationen zum Bereitstellen von Vorlagen mit Azure PowerShell finden Sie unter Bereitstellen von Ressourcen mit ARM-Vorlagen und Azure PowerShell.

Bereinigen von Ressourcen

Löschen Sie die Ressourcengruppe, um die bereitgestellten Ressourcen zu bereinigen.

  1. Wählen Sie im Azure-Portal im linken Menü die Option Ressourcengruppe aus.
  2. Geben Sie den Namen der Ressourcengruppe in das Feld Nach Name filtern ein.
  3. Klicken Sie auf den Namen der Ressourcengruppe.
  4. Wählen Sie Ressourcengruppe löschen aus dem Menü ganz oben aus.

Nächste Schritte

Sie haben gelernt, eine lokale Vorlage bereitzustellen. Im nächsten Tutorial trennen Sie die Vorlage in eine Hauptvorlage und eine verknüpfte Vorlage und erfahren zudem, wie Sie die verknüpfte Vorlage speichern und sichern.