Tutorial: Verwenden von Parameterdateien zum Bereitstellen Ihrer ARM-Vorlage

In diesem Tutorial erfahren Sie, wie Sie Parameterdateien verwenden, um die Werte zu speichern, die Sie während der Bereitstellung übergeben. In den vorherigen Tutorials haben Sie Inline-Parameter mit dem Bereitstellungs Befehl verwendet. Dieser Ansatz hat beim Testen Ihrer ARM-Vorlage (Azure Resource Manager) funktioniert, aber bei der Automatisierung von Bereitstellungen kann es einfacher sein, eine Gruppe mit Werten für Ihre Umgebung zu übergeben. Parameterdateien vereinfachen das Packen von Parameterwerten für eine bestimmte Umgebung. In diesem Tutorial erstellen Sie Parameterdateien für Entwicklungs- und Produktionsumgebungen. Der Leitfaden dauert ungefähr 12 Minuten.

Voraussetzungen

Wir empfehlen, das Tutorial zu Tags durchzuführen. Dies ist jedoch keine Voraussetzung.

Visual Studio Code muss mit der Azure Resource Manager-Tools-Erweiterung installiert und funktionsfähig sein, und Sie benötigen entweder Azure PowerShell oder die Azure-Befehlszeilenschnittstelle (Azure CLI). Weitere Informationen finden Sie unter Vorlagentools.

Überprüfen der Vorlage

Ihre Vorlage verfügt über zahlreiche Parameter, die Sie während der Bereitstellung angeben können. Am Ende des vorherigen Tutorials enthielt Ihre Vorlage die folgenden JSON-Datei:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "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": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Diese Vorlage funktioniert gut, jetzt möchten Sie jedoch problemlos die Parameter verwalten, die Sie für die Vorlage übergeben.

Parameterdateien hinzufügen

Parameterdateien sind JSON-Dateien mit einer Struktur, die ihrer Vorlage ähnelt. In der Datei geben Sie die Parameterwerte an, die Sie während der Bereitstellung übergeben möchten.

In der Parameterdatei geben Sie Werte für die Parameter in Ihrer Vorlage an. Der Name jedes Parameters in der Parameterdatei muss mit dem Namen eines Parameters in der Vorlage identisch sein. Beim Namen wird die Groß-/Kleinschreibung nicht beachtet. Um die übereinstimmenden Werte einfach anzuzeigen, sollte jedoch die Groß-/Kleinschreibung aus der Vorlage verwendet werden.

Sie müssen keinen Wert für jeden Parameter angeben. Verfügt ein nicht spezifizierter Parameter über einen Standardwert, wird dieser Wert während der Bereitstellung verwendet. Wenn ein Parameter keinen Standardwert hat und nicht in der Parameterdatei angegeben ist, werden Sie während der Bereitstellung zur Angabe eines Werts aufgefordert.

Sie können in der Parameterdatei nur Parameternamen angeben, die mit einem Parameternamen in der Vorlage identisch sind. Wenn Sie unbekannte Parameter angeben, tritt ein Fehler auf.

Erstellen Sie in Visual Studio Code eine neue Datei mit folgendem Inhalt. Speichern Sie die Datei mit dem Namen azuredeploy.parameters.dev.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "devstore"
    },
    "storageSKU": {
      "value": "Standard_LRS"
    },
    "appServicePlanName": {
      "value": "devplan"
    },
    "webAppName": {
      "value": "devapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  }
}

Diese Datei ist Ihre Parameterdatei für die Entwicklungsumgebung. Beachten Sie, dass Standard_LRS als Speicherkonto verwendet wird, Ressourcen mit dem Präfix dev benannt werden, und das Environment-Tag auf Dev festgelegt wird.

Erstellen Sie erneut eine neue Datei mit dem folgenden Inhalt. Speichern Sie die Datei mit dem Namen azuredeploy.parameters.prod.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "contosodata"
    },
    "storageSKU": {
      "value": "Standard_GRS"
    },
    "appServicePlanName": {
      "value": "contosoplan"
    },
    "webAppName": {
      "value": "contosowebapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Production",
        "Project": "Tutorial"
      }
    }
  }
}

Diese Datei ist Ihre Parameterdatei für die Produktionsumgebung. Beachten Sie, dass Standard_GRS als Speicherkonto verwendet wird, Ressourcen mit dem Präfix contoso benannt werden, und das Environment-Tag auf Production festgelegt wird. In einer realen Produktionsumgebung würden Sie auch einen App-Dienst mit einer anderen SKU als „Free“ verwenden, für dieses Tutorial verwenden wir aber diese SKU.

Bereitstellen der Vorlage

Verwenden Sie entweder die Azure CLI oder Azure PowerShell, um die Vorlage bereitzustellen.

Als abschließenden Test Ihrer Vorlage erstellen wir zwei neue Ressourcengruppen. Eine für die Entwicklungsumgebung und eine für die Produktionsumgebung.

Ersetzen Sie für die Vorlagen- und Parametervariablen {path-to-the-template-file}, {path-to-azuredeploy.parameters.dev.json}, {path-to-azuredeploy.parameters.prod.json} und die geschweiften Klammern {} durch Ihre Vorlagen- und Parameterdateipfade.

Führen wir nun zuerst die Bereitstellung in der Entwicklungsumgebung durch.

$templateFile = "{path-to-the-template-file}"
$parameterFile="{path-to-azuredeploy.parameters.dev.json}"
New-AzResourceGroup `
  -Name myResourceGroupDev `
  -Location "East US"
New-AzResourceGroupDeployment `
  -Name devenvironment `
  -ResourceGroupName myResourceGroupDev `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Nun stellen wir in der Produktionsumgebung bereit.

$parameterFile="{path-to-azuredeploy.parameters.prod.json}"
New-AzResourceGroup `
  -Name myResourceGroupProd `
  -Location "West US"
New-AzResourceGroupDeployment `
  -Name prodenvironment `
  -ResourceGroupName myResourceGroupProd `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Hinweis

Wenn bei der Bereitstellung ein Fehler auftritt, verwenden Sie den Schalter verbose, um Informationen zu den erstellten Ressourcen abzurufen. Verwenden Sie den Schalter debug, um weitere Informationen zum Debuggen zu erhalten.

Überprüfen der Bereitstellung

Sie können die Bereitstellung überprüfen, indem Sie sich die Ressourcengruppen im Azure-Portal ansehen.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie im linken Menü Ressourcengruppen aus.
  3. Sie sehen die beiden neuen Ressourcengruppen, die Sie in diesem Tutorial bereitgestellt haben.
  4. Wählen Sie eine davon aus, und zeigen Sie die bereitgestellten Ressourcen an. Beachten Sie, dass Sie mit den Werten übereinstimmen, die Sie in der Parameterdatei für diese Umgebung angegeben haben.

Bereinigen von Ressourcen

  1. Wählen Sie im Azure-Portal im linken Menü die Option Ressourcengruppen aus.

  2. Wählen Sie den Link mit dem Namen der Ressourcengruppe neben dem Kontrollkästchen aus. Wenn Sie diese Reihe abgeschlossen haben, verfügen Sie über drei Ressourcengruppen zum Löschen: myResourceGroup, myResourceGroupDev und myResourceGroupProd.

  3. Wählen Sie im obersten Menü das Symbol Ressourcengruppe löschen aus.

    Achtung

    Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden.

  4. Geben Sie den Namen der Ressourcengruppe in das angezeigt Popupfenster ein, und wählen Sie Löschen aus.

Nächste Schritte

Herzlichen Glückwunsch. Sie haben diese Einführung in die Bereitstellung von Vorlagen in Azure abgeschlossen. Informieren Sie uns im Abschnitt „Feedback“, wenn Sie Kommentare oder Vorschläge haben.

In der nächsten Tutorialreihe wird ausführlicher auf die Bereitstellung von Vorlagen eingegangen.