Samouczek: wdrażanie lokalnego szablonu usługi ARM

Dowiedz się, jak wdrożyć szablon usługi Azure Resource Manager (szablon ARM) z komputera lokalnego. Ukończenie tego procesu trwa około 8 minut .

Ten samouczek jest pierwszą z serii. Podczas przechodzenia przez serię modułyzujesz szablon, tworząc połączony szablon, przechowujesz połączony szablon na koncie magazynu i zabezpieczasz połączony szablon przy użyciu tokenu SAS, a następnie dowiesz się, jak utworzyć potok DevOps w celu wdrożenia szablonów. Ta seria koncentruje się na wdrażaniu szablonów. Jeśli chcesz nauczyć się programowania szablonów, zobacz samouczki dla początkujących.

Pobieranie narzędzi

Zacznijmy od upewnienia się, że masz narzędzia potrzebne do wdrażania szablonów.

Wdrażanie wiersza polecenia

Aby wdrożyć szablon, potrzebujesz Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać instrukcje instalacji, zobacz:

Po zainstalowaniu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure upewnij się, że logujesz się po raz pierwszy. Aby uzyskać pomoc, zobacz Logowanie — PowerShell lub Logowanie — interfejs wiersza polecenia platformy Azure.

Edytor (opcjonalnie)

Szablony to pliki JSON. Aby przejrzeć/edytować szablony, potrzebny jest dobry edytor JSON. Zalecamy Visual Studio Code z rozszerzeniem Resource Manager Tools. Jeśli musisz zainstalować te narzędzia, zobacz Szybki start: tworzenie szablonów usługi ARM przy użyciu Visual Studio Code.

Przeglądanie szablonu

Szablon wdraża konto magazynu, plan usługi App Service i aplikację internetową. Jeśli interesuje Cię tworzenie szablonu, możesz zapoznać się z samouczkiem dotyczącym szablonów szybkiego startu. Jednak nie jest to wymagane do ukończenia tego samouczka.

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

Ważne

Nazwy kont magazynu muszą być unikatowe, od 3 do 24 znaków, a tylko cyfry i małe litery. Zmienna storageAccountName przykładowego szablonu łączy projectName maksymalnie 11 znaków parametru z unikatową wartością 13 znaków.

Zapisz kopię szablonu na komputerze lokalnym przy użyciu rozszerzenia json , na przykład azuredeploy.json. Ten szablon zostanie wdrożony w dalszej części samouczka.

Logowanie do platformy Azure

Aby rozpocząć pracę z Azure PowerShell/interfejsem wiersza polecenia platformy Azure w celu wdrożenia szablonu, zaloguj się przy użyciu poświadczeń platformy Azure.

Jeśli masz wiele subskrypcji platformy Azure, wybierz subskrypcję, której chcesz użyć. Zastąp [SubscriptionID/SubscriptionName] nawiasy kwadratowe [] informacjami o subskrypcji:

Set-AzContext [SubscriptionID/SubscriptionName]

Tworzenie grupy zasobów

Podczas wdrażania szablonu należy określić grupę zasobów, która będzie zawierać zasoby. Przed uruchomieniem polecenia wdrożenia utwórz grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure lub usługi Azure PowerShell. Wybierz karty w poniższej sekcji kodu, aby wybrać między Azure PowerShell a interfejsem wiersza polecenia platformy Azure. Przykłady interfejsu wiersza polecenia w tym artykule są napisane dla powłoki powłoki Bash.

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

Wdrażanie szablonu

Użyj jednej lub obu opcji wdrażania, aby wdrożyć szablon.

$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

Aby dowiedzieć się więcej na temat wdrażania szablonu przy użyciu Azure PowerShell, zobacz Wdrażanie zasobów przy użyciu szablonów usługi ARM i Azure PowerShell.

Czyszczenie zasobów

Wyczyść wdrożone zasoby, usuwając grupę zasobów.

  1. W Azure Portal wybierz pozycję Grupa zasobów z menu po lewej stronie.
  2. Wprowadź nazwę grupy zasobów w polu Filtruj według nazwy.
  3. Wybierz nazwę grupy zasobów.
  4. Wybierz pozycję Usuń grupę zasobów z górnego menu.

Następne kroki

Przedstawiono sposób wdrażania szablonu lokalnego. W następnym samouczku oddzielisz szablon od głównego szablonu i połączonego szablonu oraz dowiesz się, jak przechowywać i zabezpieczać połączony szablon.