Руководство по развертыванию шаблона ARM в локальной среде

Узнайте, как развернуть шаблон Azure Resource Manager (шаблон ARM) на локальном компьютере. Выполнение занимает около 8 минут.

Этот учебник первый в серии. В процессе работы над серией вы модулируете шаблон, создавая связанный шаблон, сохраняете связанный шаблон в учетной записи хранения и защищаете связанный шаблон с помощью маркера SAS, кроме того вы узнаете, как создать конвейер DevOps для развертывания шаблонов. Эта серия посвящена развертыванию шаблона. Если вы хотите изучить разработку шаблонов, ознакомьтесь с Руководством для начинающих.

Получение средств

Убедитесь, что у вас есть средства, необходимые для развертывания шаблонов.

Развертывание из командной строки

Для развертывания шаблона используйте либо Azure CLI, либо Azure PowerShell. Ознакомьтесь с инструкциями по установке:

После установки Azure PowerShell или Azure CLI убедитесь, что вы вошли в систему в первый раз. Дополнительные сведения см. в разделах для PowerShell или Azure CLI.

Редактор (необязательно)

Шаблоны — это файлы JSON. Для просмотра и изменения шаблонов нужен редактор JSON. Советуем использовать Visual Studio Code с расширением средств Resource Manager. Если необходимо установить эти средства, см. статью Краткое руководство. Создание шаблонов ARM с помощью Visual Studio Code.

Проверка шаблона

Шаблон развертывает учетную запись хранения, план службы приложений и веб-приложение. Если вы заинтересованы в создании шаблона быстрого запуска, изучите этот учебник. Однако это не является обязательным для работы с данным руководством.

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

Важно!

Имя учетной записи хранения должно быть уникальным, содержать от 3 до 24 символов и состоять только из цифр и букв нижнего регистра. Переменная storageAccountName примера шаблона сочетает максимальное значение параметра projectName, равное 11 символам, со значением uniqueString, равным 13 символам.

Сохраните копию шаблона на локальном компьютере с расширением JSON, например azuredeploy.json. Этот шаблон развертывается далее в этом руководстве.

Вход в Azure

Чтобы начать работу с Azure PowerShell или Azure CLI для развертывания шаблона, выполните вход, используя данные своей учетной записи в Azure.

Connect-AzAccount

Если у вас несколько подписок Azure, выберите ту, которую хотите использовать. Замените [SubscriptionID/SubscriptionName] и квадратные скобки [] сведениями о подписке:

Set-AzContext [SubscriptionID/SubscriptionName]

Создать группу ресурсов

При развертывании шаблона необходимо указать группу ресурсов, которая будет содержать развернутые ресурсы. Перед выполнением команды развертывания создайте группу ресурсов с помощью Azure CLI или Azure PowerShell. Выберите вкладки в следующем разделе кода, чтобы выбрать между Azure PowerShell и Azure CLI. Примеры интерфейса командной строки в этой статье написаны для оболочки 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"

Развертывание шаблона

Используйте один или оба варианта развертывания для развертывания шаблона.

$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

Дополнительные сведения о развертывании шаблона с помощью Azure PowerShell см. в статье Развертывание ресурсов с использованием шаблонов ARM и Azure PowerShell.

Очистка ресурсов

Очистите развернутые ресурсы, удалив группу ресурсов.

  1. На портале Azure в меню слева выберите Группа ресурсов.
  2. В поле Фильтровать по имени введите имя группы ресурсов.
  3. Выберите имя группы ресурсов.
  4. В главном меню выберите Удалить группу ресурсов.

Дальнейшие действия

Вы узнали как выполнять развертывание локального шаблона. В следующем руководстве вы разделите шаблон на основной шаблон и связанный, а также узнаете, как сохранить и защитить связанный шаблон.