Dela via


Självstudie: Använda Azure-snabbstartsmallar

Azure Snabbstartsmallar är ett arkiv med mallar som communityn har bidragit med. Du kan använda exempelmallarna i mallutvecklingen. I den här handledningen hittar du en webbplatsresursdefinition och lägger till den i din egen mall. Den här instruktionen tar 12 minuter att slutföra.

Förutsättningar

Vi rekommenderar att du slutför självstudien om exporterade mallar, men det krävs inte.

Du måste ha Visual Studio Code och antingen Azure PowerShell eller Azure CLI. Mer information finns i mallverktyg.

Granskningsmall

I slutet av den föregående självstudien hade mallen följande JSON-fil:

{
  "$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"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('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
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Den här mallen fungerar för distribution av lagringskonton och App Service-planer, men du kanske vill lägga till en webbplats i den. Du kan använda fördefinierade mallar för att snabbt identifiera den JSON som krävs för att distribuera en resurs.

Sök efter mall

  1. Öppna Azure-snabbstartsmallar

  2. Välj panelen med rubriken Distribuera en grundläggande Linux-webbapp. Om du har problem med att hitta den, här är direktlänken.

  3. Välj Bläddra på GitHub.

  4. Välj azuredeploy.json.

  5. Granska mallen. Leta efter resursen Microsoft.Web/sites .

    Snabbstartswebbplats för Resource Manager-mall

Ändra befintlig mall

Sammanfoga snabbstartsmallen med den befintliga mallen:

{
  "$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"
      }
    }
  },
  "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')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('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": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
      ],
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Webbappens namn måste vara unikt i Hela Azure. För att förhindra dubbletter av namn uppdateras variabeln webAppPortalName från "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]" till "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]".

Lägg till ett kommatecken i slutet av Microsoft.Web/serverfarms definitionen för att skilja resursdefinitionen Microsoft.Web/sites från definitionen.

Det finns några viktiga funktioner att notera i den här nya resursen.

Det har ett element med namnet dependsOn som är inställt på appserviceplanen. Den här inställningen krävs eftersom apptjänstplanen måste finnas innan webbappen skapas. Elementet dependsOn berättar för Resource Manager hur du beställer resurserna för distribution.

Egenskapen serverFarmId använder funktionen resourceId . Den här funktionen hämtar den unika identifieraren för en resurs. I det här fallet hämtar den den unika identifieraren för App Service-planen. Webbappen är associerad med en specifik App Service-plan.

Distribuera mallen

Använd Azure CLI eller Azure PowerShell för att distribuera en mall.

Om du inte har skapat resursgruppen kan du läsa Skapa resursgrupp. Exemplet förutsätter att du har angett variabeln templateFile till sökvägen till mallfilen, som du ser i den första självstudien.

New-AzResourceGroupDeployment `
  -Name addwebapp `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS `
  -webAppName demoapp

Anmärkning

Om distributionen misslyckas använder du växeln verbose för att hämta information om de resurser som du skapar. Använd växeln debug för att få mer information om felsökning.

Rensa resurser

Om du går vidare till nästa självstudie behöver du inte ta bort resursgruppen.

Om du slutar nu kanske du vill ta bort resursgruppen.

  1. I Azure-portalen väljer du Resursgrupper på den vänstra menyn.
  2. Skriv resursgruppens namn i fältet Filter för alla fält... textfält.
  3. Markera kryssrutan bredvid myResourceGroup och välj myResourceGroup eller resursgruppens namn.
  4. Välj Ta bort resursgrupp på den översta menyn.

Nästa steg

Du har lärt dig hur du använder en snabbstartsmall för din mallutveckling. I nästa handledning lägger du till taggar i resurserna.