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


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

Примечание.

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

Примечание.

Для оптимальной и безопасной работы настоятельно рекомендуется обновить установку Visual Studio до последней версии долгосрочной поддержки (LTS). Обновление повысит надежность и общую производительность среды Visual Studio. Если вы решили не обновлять, при создании и развертывании групп ресурсов Azure с помощью Visual Studio могут возникнуть проблемы, описанные в разделе "Проблемы".

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

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

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

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

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

  2. Найдите группу ресурсов и выберите шаблон проекта группы ресурсов Azure (расширенная поддержка) и далее.

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

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

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

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

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

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

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

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

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

    Имя файла Description
    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, в котором выделен параметр

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

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

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

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

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

    "demoAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_ZRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Premium_LRS"
      ]
    }
    

Развертывание проекта в 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. Выберите Веб-приложение и нажмите кнопку Создать.

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

  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/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "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. Дополнительные сведения о разработке шаблонов см. в новой серии