Создание и развертывание групп ресурсов Azure с помощью Visual Studio

С помощью Visual Studio можно создать проект для развертывания инфраструктуры и кода в Azure. Например, вы можете развернуть веб-узел, веб-сайт и код для веб-сайта. Visual Studio предоставляет разные начальные шаблоны для распространенных сценариев развертывания. В этой статье показано, как развернуть веб-приложение.

В этой статье показано, как использовать Visual Studio 2019 или более поздней версии для разработки Azure и установленных рабочих нагрузок ASP.NET. Использование Visual Studio 2017 в основном такое же.

Создание проекта группы ресурсов Azure

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

  1. В Visual Studio выберите Файл>Создать>Проект.

  2. Выберите шаблон проекта группы ресурсов Azure и нажмите кнопку Далее.

    Снимок экрана: окно создания проекта с выделенными кнопками

  3. Дайте имя вашему проекту. Другие настройки по умолчанию, вероятно, подойдут, но проверьте их функционирование в вашей среде. Затем выберите Создать.

    Снимок экрана: окно именования проекта в Visual Studio.

  4. Выберите шаблон, который вы намерены развернуть в диспетчере ресурсов Azure. Обратите внимание, что доступны разные варианты, основывающиеся на типе проекта, который вы хотите развернуть. В этом примере следует выбрать шаблон Веб-приложение и нажать кнопку ОК.

    Снимок экрана: окно выбора шаблона с выделенным шаблоном веб-приложения.

    Выбор шаблона — это просто отправная точка. Вы можете добавлять и удалять ресурсы для реализации своего сценария.

  5. Visual Studio создает проект развертывания группы ресурсов для веб-приложения. Чтобы увидеть файлы для вашего проекта, посмотрите на узел в проекте развертывания.

    Снимок экрана: Обозреватель решений Visual Studio с файлами проекта развертывания группы ресурсов.

    Так как вы выбрали шаблон "Веб-приложение", отобразятся указанные ниже файлы.

    Имя файла Описание
    Deploy-AzureResourceGroup.ps1 Сценарий PowerShell, вызывающий команды PowerShell для развертывания в Azure Resource Manager. Visual Studio использует этот скрипт PowerShell для развертывания шаблона.
    WebSite.json Шаблон Resource Manager, определяющий инфраструктуру, которую требуется развернуть в Azure, и параметры, которые можно указать во время развертывания. Кроме того, он определяет зависимости между ресурсами, благодаря чему Resource Manager развертывает их в правильном порядке.
    WebSite.parameters.json Файл параметров, который содержит значения, необходимые для шаблона. Это значения, передаваемые для настройки каждого развертывания. Обратите внимание, что для параметра Действие сборки задано значение Содержимое. При добавлении дополнительных файлов параметров убедитесь, что для действия сборки задано значение Содержимое.

    Все проекты развертывания группы ресурсов содержат эти основные файлы. Другие проекты могут содержать дополнительные файлы для поддержки других функциональных возможностей.

Настройка шаблона Resource Manager

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

  1. Для работы с шаблоном откройте файл WebSite.json.

  2. Редактор Visual Studio предоставляет средства, которые помогают изменить шаблон Resource Manager. Окно Структура JSON упрощает просмотр элементов, определенных в шаблоне.

    Снимок экрана: окно структуры JSON в Visual Studio для шаблона Resource Manager.

  3. Выберите элемент в структуре, чтобы перейти к этой части шаблона.

    Снимок экрана: редактор Visual Studio с выбранным элементом в окне структуры JSON.

  4. Можно добавить новый ресурс, нажав кнопку Добавить ресурс в верхней части окна структуры JSON. Или же можно щелкнуть правой кнопкой мыши элемент Ресурсы и выбрать команду Добавить новый ресурс.

    Снимок экрана: окно структуры JSON с выделенным параметром

  5. Выберите Учетная запись хранения и укажите имя. Имя учетной записи хранения должно содержать только цифры и строчные буквы, а длина не должна превышать 11 символов.

    Снимок экрана: окно

  6. Обратите внимание, что добавляется не только ресурс: для типа учетной записи хранения также будет добавлен параметр, а для ее имени — переменная.

    Снимок экрана: окно структуры JSON с добавленным ресурсом учетной записи хранения.

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

    "demoaccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_ZRS",
        "Standard_GRS",
        "Standard_RAGRS"
      ]
    }
    
  8. Кроме того, Visual Studio предоставляет шаблон IntelliSense, который определяет свойства, доступные при редактировании шаблона. Например, чтобы изменить свойства плана службы приложений, перейдите к ресурсу HostingPlan и задайте значение для параметра properties. Обратите внимание, что в шаблоне IntelliSense отображаются доступные значения, а также приводится описание каждого значения.

    Снимок экрана: редактор Visual Studio с предложениями IntelliSense для шаблона Resource Manager.

    Можно задать для параметра numberOfWorkers значение 1 и сохранить файл.

    "properties": {
      "name": "[parameters('hostingPlanName')]",
      "numberOfWorkers": 1
    }
    
  9. Откройте файл WebSite.parameters.json. Файл параметров используется для передачи во время развертывания значений, на основе которых настраивается развертываемый ресурс. Дайте имя плану размещения и сохраните файл.

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "hostingPlanName": {
          "value": "demoHostPlan"
        }
      }
    }
    

Развертывание проекта в Azure

Теперь все готово для развертывания проекта в группе ресурсов.

По умолчанию скрипт PowerShell (Deploy-AzureResourceGroup.ps1) в проекте использует модуль AzureRM. Если у вас все еще установлен модуль AzureRM и вы хотите продолжить его использование, можно воспользоваться этим скриптом по умолчанию. При использовании этого скрипта можно развернуть свое решение с помощью интерфейса Visual Studio.

Однако, если вы перешли на новый модуль Az, в проект нужно добавить новый скрипт. Чтобы добавить скрипт, использующий модуль Az, скопируйте скрипт Deploy-AzTemplate.ps1 и добавьте его в свой проект. Чтобы использовать этот скрипт для развертывания, необходимо запустить его из консоли PowerShell, а не через интерфейс развертывания Visual Studio.

В этой статье описаны оба подхода. В этой статье скрипт по умолчанию называется скриптом модуля AzureRM, а новый скрипт — скриптом модуля Az.

Скрипт модуля Az

Для скрипта модуля Az откройте консоль PowerShell и запустите:

.\Deploy-AzTemplate.ps1 -ArtifactStagingDirectory . -Location centralus -TemplateFile WebSite.json -TemplateParametersFile WebSite.parameters.json

Скрипт модуля AzureRM

Для скрипта модуля AzureRM используйте Visual Studio:

  1. В контекстном меню узла проекта развертывания последовательно выберите пункты Развернуть>Новое.

    Снимок экрана: контекстное меню проекта развертывания с выделенными параметрами

  2. Появится диалоговое окно Развертывание в группе ресурсов. В раскрывающемся поле Группа ресурсов выберите существующую группу ресурсов или создайте новую. Выберите Развернуть.

    Снимок экрана: диалоговое окно

  3. Состояние развертывания отображается в окне Выходные данные . После успешного завершения развертывания появится примерно такое сообщение:

    18:00:58 - Successfully deployed template 'website.json' to resource group 'ExampleAppDeploy'.
    

Отображение развернутых ресурсов

Давайте проверим результаты.

  1. Откройте в браузере портал Azure и войдите в свою учетную запись. Чтобы просмотреть группу ресурсов, щелкните Группы ресурсов и укажите группу ресурсов, в которой выполнено развертывание.

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

    Снимок экрана: портал Azure с развернутыми ресурсами в группе ресурсов.

Добавление кода в проект

На этом этапе инфраструктура для приложения уже развернута, а фактический код для проекта — еще нет.

  1. Добавьте проект в свое решение Visual Studio. Щелкните правой кнопкой мыши решение и выберите команду Добавить>Новый проект.

    Снимок экрана: контекстное меню

  2. Добавьте веб-приложение ASP.NET Core.

    Снимок экрана: окно

  3. Дайте вашему веб-приложению имя и нажмите кнопку Создать.

    Снимок экрана: окно именования проекта для веб-приложения ASP.NET Core.

  4. Выберите Веб-приложение и нажмите кнопку Создать.

    Снимок экрана: окно

  5. После создания веб-приложения в Visual Studio оба проекта отобразятся в решении.

    Снимок экрана: Обозреватель решений Visual Studio с обоими проектами в решении.

  6. Теперь нужно убедиться, что проект группы ресурсов уведомлен о новом проекте. Вернитесь к проекту группы ресурсов (ExampleAppDeploy). Щелкните правой кнопкой мыши Ссылки и выберите Добавить ссылку.

    Снимок экрана: контекстное меню ExampleAppDeploy с выделенным параметром

  7. Выберите созданный проект веб-приложения.

    Снимок экрана: окно

    Добавляя ссылку, вы связываете проект веб-приложения с проектом группы ресурсов и автоматически задаете ряд свойств. Свойства отображаются в окне Свойства для ссылки. Свойство Include File Path (Включать путь к файлу) содержит путь к расположению, в котором будет создан пакет. Обратите внимание на папку (ExampleApp) и файл (package.zip). Эти значения необходимо знать, так как их нужно указывать при развертывании приложения.

    Снимок экрана: окно свойств со свойствами ссылки для проекта веб-приложения.

  8. Вернитесь к шаблону WebSite.json и добавьте ресурс в шаблон.

    Снимок экрана: окно структуры JSON с выделенным параметром

  9. На этот раз выберите Веб-развертывание для веб-приложений.

    Снимок экрана: окно

    Сохраните свой шаблон.

  10. В вашем шаблоне есть несколько новых параметров. Они были добавлены на предыдущем этапе. Вам не нужно задавать значения для параметров _artifactsLocation или _artifactsLocationSasToken, так как эти значения создаются автоматически. Тем не менее, вы должны задать папку и имя файла, соответствующие пути, по которому расположен пакет развертывания. Имена этих параметров заканчиваются на PackageFolder и PackageFileName. Первая часть имени — это имя добавленного вами ресурса веб-развертывания. В этой статье они названы ExampleAppPackageFolder и ExampleAppPackageFileName.

    Откройте файл Website.parameters.json и установите для этих параметров значения, которые вы видели в справочных свойствах. Задайте для параметра ExampleAppPackageFolder имя папки. Задайте для параметра ExampleAppPackageFileName имя ZIP-файла.

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "hostingPlanName": {
          "value": "demoHostPlan"
        },
        "ExampleAppPackageFolder": {
          "value": "ExampleApp"
        },
        "ExampleAppPackageFileName": {
          "value": "package.zip"
        }
      }
    }
    

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

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

Скрипт модуля Az

Если вы используете скрипт модуля Az, вам нужно внести одно небольшое изменение в свой шаблон. Этот скрипт добавляет косую черту к расположению артефактов, но ваш шаблон не ожидает такой косой черты. Откройте файл WebSite.json и найдите свойства для расширения MSDeploy. Он содержит свойство с именем packageUri. Удалите косую черту между расположением артефактов и папкой пакета.

Результат будет выглядеть так:

"packageUri": "[concat(parameters('_artifactsLocation'), parameters('ExampleAppPackageFolder'), '/', parameters('ExampleAppPackageFileName'), parameters('_artifactsLocationSasToken'))]",

Обратите внимание, что в предыдущем примере нет '/', между параметрами parameters('_artifactsLocation') и parameters('ExampleAppPackageFolder') .

Выполните повторную сборку проекта. Сборка проекта гарантирует, что файлы, которые нужно развернуть, будут добавлены в промежуточную папку.

Теперь откройте консоль PowerShell и запустите:

.\Deploy-AzTemplate.ps1 -ArtifactStagingDirectory .\bin\Debug\staging\ExampleAppDeploy -Location centralus -TemplateFile WebSite.json -TemplateParametersFile WebSite.parameters.json -UploadArtifacts -StorageAccountName <storage-account-name>

Скрипт модуля AzureRM

Для скрипта модуля AzureRM используйте Visual Studio:

  1. Для повторного развертывания щелкните Развернуть и выберите группу ресурсов, которую вы развернули ранее.

    Снимок экрана: контекстное меню проекта развертывания с выделенным элементом

  2. Для параметра Учетная запись хранения артефактов выберите учетную запись, развернутую в этой группе ресурсов.

    Снимок экрана: диалоговое окно

Просмотр веб-приложения

  1. После завершения развертывания выберите веб-приложение на портале. Щелкните URL-адрес, чтобы перейти на сайт.

    Снимок экрана: портал Azure с ресурсом веб-приложения с выделенным URL-адресом.

  2. Приложение ASP.NET по умолчанию успешно развернуто.

    Снимок экрана: развернутое приложение ASP.NET по умолчанию в веб-браузере.

Добавление панели мониторинга операций

Вы можете использовать не только ресурсы, доступные через интерфейс Visual Studio. Развертывание можно настроить, добавив пользовательский ресурс в шаблон. Для отображения добавления ресурса следует добавить панель мониторинга операций, позволяющую управлять развертываемым ресурсом.

  1. Откройте файл WebSite.json и добавьте следующий JSON после ресурса учетной записи хранения, но перед закрывающей скобкой ] раздела ресурсов.

     ,{
       "properties": {
         "lenses": {
           "0": {
             "order": 0,
             "parts": {
               "0": {
                 "position": {
                   "x": 0,
                   "y": 0,
                   "colSpan": 4,
                   "rowSpan": 6
                 },
                 "metadata": {
                   "inputs": [
                     {
                       "name": "resourceGroup",
                       "isOptional": true
                     },
                     {
                       "name": "id",
                       "value": "[resourceGroup().id]",
                       "isOptional": true
                     }
                   ],
                   "type": "Extension/HubsExtension/PartType/ResourceGroupMapPinnedPart"
                 }
               },
               "1": {
                 "position": {
                   "x": 4,
                   "y": 0,
                   "rowSpan": 3,
                   "colSpan": 4
                 },
                 "metadata": {
                   "inputs": [],
                   "type": "Extension[azure]/HubsExtension/PartType/MarkdownPart",
                   "settings": {
                     "content": {
                       "settings": {
                         "content": "__Customizations__\n\nUse this dashboard to create and share the operational views of services critical to the application performing. To customize simply pin components to the dashboard and then publish when you're done. Others will see your changes when you publish and share the dashboard.\n\nYou can customize this text too. It supports plain text, __Markdown__, and even limited HTML like images <img width='10' src='https://portal.azure.com/favicon.ico'/> and <a href='https://azure.microsoft.com' target='_blank'>links</a> that open in a new tab.\n",
                         "title": "Operations",
                         "subtitle": "[resourceGroup().name]"
                       }
                     }
                   }
                 }
               }
             }
           }
         },
         "metadata": {
           "model": {
             "timeRange": {
               "value": {
                 "relative": {
                   "duration": 24,
                   "timeUnit": 1
                 }
               },
               "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
             }
           }
         }
       },
       "type": "Microsoft.Portal/dashboards",
       "apiVersion": "2015-08-01-preview",
       "name": "[concat('ARM-',resourceGroup().name)]",
       "location": "[resourceGroup().location]",
       "tags": {
         "hidden-title": "[concat('OPS-',resourceGroup().name)]"
       }
     }
    
  2. Заново разверните проект.

  3. После завершения развертывания просмотрите панель мониторинга на портале. Щелкните Панель мониторинга и выберите ту, которую вы развернули.

    Снимок экрана: страница панели мониторинга портал Azure с примером пользовательской панели мониторинга.

  4. Вы увидите настроенную панель мониторинга.

    Снимок экрана: настраиваемая панель мониторинга в портал Azure.

Вы можете управлять доступом к панели мониторинга с помощью управления доступом на основе ролей Azure (Azure RBAC). Кроме того, после развертывания панели мониторинга можно настроить ее внешний вид. Однако если вы повторно развернете группу ресурсов, панель мониторинга будет сброшена до значений по умолчанию в шаблоне. Дополнительные сведения о создании панелей мониторинга см. в статье Создание панелей мониторинга Azure программными средствами.

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

Если ресурсы Azure больше не нужны, их можно удалить. Для этого необходимо удалить группу ресурсов.

  1. На портале Azure в меню слева выберите Группы ресурсов.

  2. Выберите имя группы ресурсов.

  3. В главном меню выберите Удалить группу ресурсов.

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

В этой статье вы узнали, как создать и развернуть шаблоны с помощью Visual Studio. Дополнительные сведения о разработке шаблонов см. в новой серии