Delen via


Zelfstudie: Een lokale ARM-sjabloon implementeren

Ontdek hoe u een ARM-sjabloon (Azure Resource Manager) kunt implementeren vanaf de lokale machine. Dit neemt ongeveer 8 minuten in beslag.

Deze zelfstudie is de eerste van een reeks. In deze reeks deelt u de sjabloon op in modules door een gekoppelde sjabloon te maken. U slaat het gekoppelde sjabloon op in een opslagaccount en beveiligt dit met een SAS-token. U leert ook hoe u een DevOps-pijplijn maakt om sjablonen te implementeren. Deze reeks gaat over de implementatie van sjablonen. Als u wilt leren hoe u een sjabloon kunt implementeren, bekijk dan de zelfstudies voor beginners.

Hulpprogramma's installeren

Laten we er allereerst voor zorgen dat u de nodige hulpprogramma's heeft om sjablonen te implementeren.

Implementatie via opdrachtregels

U hebt Azure PowerShell of Azure CLI nodig om de sjabloon te implementeren. Zie voor installatie-instructies:

Nadat u Azure PowerShell of Azure CLI hebt geïnstalleerd moet u zich voor de eerste keer aanmelden. Bekijk Aanmelden - PowerShell of Aanmelden - Azure CLI voor ondersteuning.

Editor (optioneel)

Sjablonen zijn JSON-bestanden. Om sjablonen te controleren/bewerken heeft u een goede JSON-editor nodig. We raden Visual Studio Code met de extensie Resource Manager Tools aan. Als u deze hulpprogramma's wilt installeren, raadpleegt u quickstart: ARM-sjablonen maken met Visual Studio Code.

Sjabloon controleren

Het sjabloon implementeert een opslagaccount, App Service-plan en webtoepassing. Als u de sjabloon wilt aanmaken, doorloop dan de zelfstudie over Quickstart-sjablonen. Dat is echter geen vereiste om deze zelfstudie te voltooien.

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

Belangrijk

Namen van opslagaccounts moeten uniek zijn, tussen 3 en 24 tekens lang, en alleen cijfers en kleine letters bevatten. De variabele van storageAccountName de voorbeeldsjabloon combineert het maximum van 11 tekens van de projectName parameter met een uniqueString-waarde van 13 tekens.

Sla een kopie van de sjabloon op de lokale computer op met de extensie .json, bijvoorbeeld azuredeploy.json. Verderop in deze sjabloon implementeert u deze sjabloon.

Aanmelden bij Azure

Meld u aan met uw Azure-referenties om aan de slag te gaan met Azure PowerShell/Azure CLI en een sjabloon te implementeren.

Connect-AzAccount

Als u meerdere Azure-abonnementen hebt, selecteert u het abonnement dat u wilt gebruiken. Vervang [SubscriptionID/SubscriptionName] en de vierkante haken [] door uw abonnementsgegevens:

Set-AzContext [SubscriptionID/SubscriptionName]

Een resourcegroep maken

Wanneer u een sjabloon implementeert, geeft u een resourcegroep op die de resources zal bevatten. Voordat u de opdracht voor de implementatie uitvoert, maakt u de resourcegroep met behulp van Azure CLI of Azure PowerShell. Selecteer de tabbladen in de volgende codesectie om te kiezen tussen Azure PowerShell en Azure CLI. De CLI-voorbeelden in dit artikel zijn geschreven voor de Bash-shell.

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

Sjabloon implementeren

Gebruik een of beide implementatie-opties om de sjabloon te implementeren.

$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

Zie Resources implementeren met ARM-sjablonen en Azure PowerShell voor meer informatie over de implementatie van sjablonen met Azure PowerShell.

Resources opschonen

Schoon de geïmplementeerd resources op door de resourcegroep te verwijderen.

  1. Selecteer Resourcegroep in het linkermenu van Azure Portal.
  2. Voer de naam van de resourcegroep in het veld Filter by name in.
  3. Selecteer de naam van de resourcegroep.
  4. Selecteer Resourcegroep verwijderen in het bovenste menu.

Volgende stappen

U hebt geleerd hoe u een lokale sjabloon kunt implementeren. In de volgende zelfstudie splitst u de sjabloon op in een hoofdsjabloon en een gekoppelde sjabloon en leert u hoe u de gekoppelde sjabloon kunt opslaan en beveiligen.