Dela via


Självstudie: Använda Azure-snabbstartsmallar

Azure-snabbstartsmallar är en lagringsplats med mallar som har bidragit med communityn. Du kan använda exempelmallarna i din mallutveckling. I den här självstudien 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 med tillägget Resource Manager Tools och antingen Azure PowerShell eller Azure Command-Line Interface (CLI). Mer information finns i mallverktyg.

Granska mall

I slutet av föregående självstudie 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 att distribuera 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 mall

  1. Öppna Azure-snabbstartsmallar

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

  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.

Den har ett element med namnet dependsOn som är inställt på App Service-planen. Den här inställningen krävs eftersom App Service-planen måste finnas innan webbappen skapas. Elementet dependsOn anger för Resource Manager hur resurserna ska beställas 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 antingen 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

Anteckning

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 stoppar nu kanske du vill ta bort resursgruppen.

  1. I Azure Portal väljer du Resursgrupper på den vänstra menyn.
  2. Ange resursgruppens namn i fältet Filtrera efter fält... text.
  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 självstudie lägger du till taggar till resurserna.