Поделиться через


Учебник. Использование шаблонов быстрого запуска Azure

Шаблоны быстрого запуска Azure — это репозиторий шаблонов, наполняемый силами сообщества. Примеры шаблонов можно использовать при разработке шаблонов. В этом руководстве вы найдете определение ресурса веб-сайта и добавите его в собственный шаблон. Для выполнения этой инструкции потребуется около 12 минут.

Предварительные требования

Советуем выполнить инструкции из учебника по экспортированным шаблонам, но это необязательно.

Необходимо установить Visual Studio Code с расширением инструментов Resource Manager, а также Azure PowerShell или интерфейс командной строки Azure (CLI). Дополнительные сведения см. в разделе об инструментах шаблона.

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

В конце предыдущего учебника шаблон содержал следующий файл 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]"
    }
  }
}

Этот шаблон подходит для развертывания учетных записей хранения и планов службы приложений, но может потребоваться добавить в него веб-сайт. Вы можете использовать готовые шаблоны для быстрого обнаружения JSON, необходимого для развертывания ресурса.

Поиск шаблона

  1. Откройте Шаблоны быстрого запуска Azure.

  2. Выберите элемент с названием Deploy a basic Linux web app (Развертывание простого веб-приложения Linux). Если у вас возникли проблемы с поиском, используйте прямую ссылку.

  3. Выберите Browse on GitHub (Найти на GitHub).

  4. Выберите azuredeploy.json.

  5. Изучите шаблон. Найдите ресурс Microsoft.Web/sites.

    Веб-сайт краткого руководства по шаблону Resource Manager

Изменение имеющегося шаблона

Объедините шаблон быстрого запуска с существующим шаблоном:

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

Имя веб-приложения должно быть уникальным в Azure. Чтобы запретить использование дубликатов имен, значение переменной webAppPortalName изменено с "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]" на "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]".

Добавьте запятую в конце определения Microsoft.Web/serverfarms, чтобы отделить определение ресурса от определения Microsoft.Web/sites.

В этом новом ресурсе есть несколько важных компонентов.

Он содержит элемент с именем dependsOn, для которого установлен план службы приложений. Этот параметр является обязательным, так как план службы приложений должен существовать до создания веб-приложения. Элемент dependsOn указывает Resource Manager, как упорядочивать ресурсы для развертывания.

Свойство serverFarmId использует функцию resourceId. Эта функция возвращает уникальный идентификатор ресурса. Здесь она получает уникальный идентификатор для плана службы приложений. Веб-приложение связано с одним определенным планом службы приложений.

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

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

Если вы еще не создали группу ресурсов, см. этот раздел. В этом примере предполагается, что для переменной templateFile указан путь к файлу шаблона, как показано в первом учебнике.

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

Примечание

Если развертывание завершается сбоем, используйте параметр verbose, чтобы получить сведения о создаваемых ресурсах. Используйте параметр debug, чтобы получить дополнительные сведения для отладки.

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

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

Если вы прекращаете работу, то можете удалить группу ресурсов.

  1. На портале Azure в меню слева выберите Группы ресурсов.
  2. Введите имя группы ресурсов в текстовое поле Фильтрация всех полей....
  3. Установите флажок рядом с myResourceGroup и выберите myResourceGroup или имя вашей группы ресурсов.
  4. В главном меню выберите Удалить группу ресурсов.

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

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