Samouczek: korzystanie z szablonów szybkiego startu platformy Azure

Szablony szybkiego startu platformy Azure to repozytorium szablonów współautorów społeczności. Możesz użyć przykładowych szablonów podczas opracowywania szablonów. W tym samouczku znajdziesz definicję zasobu witryny internetowej i dodasz ją do własnego szablonu. Ukończenie tej instrukcji trwa 12 minut .

Wymagania wstępne

Zalecamy ukończenie samouczka dotyczącego wyeksportowanych szablonów, ale nie jest to wymagane.

Musisz mieć Visual Studio Code z rozszerzeniem Resource Manager Tools oraz interfejsem Azure PowerShell lub interfejsem azure Command-Line (CLI). Aby uzyskać więcej informacji, zobacz narzędzia szablonów.

Przeglądanie szablonu

Na końcu poprzedniego samouczka szablon miał następujący plik JSON:

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

Ten szablon działa na potrzeby wdrażania kont magazynu i planów usługi App Service, ale możesz dodać do niej witrynę internetową. Za pomocą wstępnie utworzonych szablonów można szybko odnaleźć kod JSON wymagany do wdrożenia zasobu.

Znajdowanie szablonu

  1. Otwieranie szablonów szybkiego startu platformy Azure

  2. Wybierz kafelek z tytułem Wdróż podstawową aplikację internetową systemu Linux. Jeśli masz problem ze znalezieniem go, oto bezpośredni link.

  3. Wybierz pozycję Przeglądaj w witrynie GitHub.

  4. Wybierz plik azuredeploy.json.

  5. Przejrzyj szablon. Microsoft.Web/sites Wyszukaj zasób.

    Resource Manager szablonu — szybki start — witryna internetowa

Poprawianie istniejącego szablonu

Scal szablon szybkiego startu z istniejącym szablonem:

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

Nazwa aplikacji internetowej musi być unikatowa na platformie Azure. Aby zapobiec występowaniu zduplikowanych nazw, zmienna webAppPortalName jest aktualizowana z "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]" do "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]".

Dodaj przecinek na końcu Microsoft.Web/serverfarms definicji, aby oddzielić definicję zasobu od Microsoft.Web/sites definicji.

W tym nowym zasobie należy pamiętać o kilku ważnych funkcjach.

Ma on element o nazwie dependsOn , który jest ustawiony na plan usługi App Service. To ustawienie jest wymagane, ponieważ plan usługi App Service musi istnieć przed utworzeniem aplikacji internetowej. Element dependsOn informuje Resource Manager, jak zamówić zasoby na potrzeby wdrożenia.

Właściwość serverFarmId używa funkcji resourceId . Ta funkcja pobiera unikatowy identyfikator zasobu. W takim przypadku pobiera unikatowy identyfikator planu usługi App Service. Aplikacja internetowa jest skojarzona z jednym określonym planem usługi App Service.

Wdrażanie szablonu

Użyj interfejsu wiersza polecenia platformy Azure lub Azure PowerShell, aby wdrożyć szablon.

Jeśli grupa zasobów nie została utworzona, zobacz Tworzenie grupy zasobów. W przykładzie przyjęto założenie, że zmienna templateFile została ustawiona na ścieżkę do pliku szablonu, jak pokazano w pierwszym samouczku.

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

Uwaga

Jeśli wdrożenie zakończy się niepowodzeniem, użyj przełącznika verbose , aby uzyskać informacje o tworzonych zasobach. Użyj przełącznika, debug aby uzyskać więcej informacji na temat debugowania.

Czyszczenie zasobów

Jeśli przejdziesz do następnego samouczka, nie musisz usuwać grupy zasobów.

Jeśli zatrzymasz się teraz, możesz usunąć grupę zasobów.

  1. W Azure Portal wybierz pozycję Grupy zasobów z menu po lewej stronie.
  2. Wpisz nazwę grupy zasobów w polu tekstowym Filtruj dla dowolnego pola...
  3. Zaznacz pole wyboru obok pozycji myResourceGroup i wybierz pozycję myResourceGroup lub nazwę grupy zasobów.
  4. Wybierz pozycję Usuń grupę zasobów z górnego menu.

Następne kroki

Wiesz już, jak używać szablonu szybkiego startu do opracowywania szablonów. W następnym samouczku dodasz tagi do zasobów.