Создание и развертывание групп ресурсов Azure с помощью Visual StudioCreating and deploying Azure resource groups through Visual Studio

С помощью Visual Studio можно создать проект для развертывания инфраструктуры и кода в Azure.With Visual Studio, you can create a project that deploys your infrastructure and code to Azure. Например, вы можете развернуть веб-узел, веб-сайт и код для веб-сайта.For example, you can deploy the web host, web site, and code for the web site. Visual Studio предоставляет разные начальные шаблоны для распространенных сценариев развертывания.Visual Studio provides many different starter templates for deploying common scenarios. В этой статье показано, как развернуть веб-приложение.In this article, you deploy a web app.

В этой статье показано, как использовать Visual Studio 2019 или более поздней версии для разработки Azure и установленных рабочих нагрузок ASP.NET.This article shows how to use Visual Studio 2019 or later with the Azure development and ASP.NET workloads installed. Использование Visual Studio 2017 в основном такое же.If you use Visual Studio 2017, your experience is largely the same.

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

В этом разделе будет создан проект группы ресурсов Azure с помощью шаблона Веб-приложение.In this section, you create an Azure Resource Group project with a Web app template.

  1. В Visual Studio выберите Файл, Создать, Проект.In Visual Studio, choose File, New, and Project. Выберите шаблон проекта группы ресурсов Azure и нажмите кнопку Далее.Select the Azure Resource Group project template and Next.

    Создание проекта

  2. Дайте имя вашему проекту.Give your project a name. Другие настройки по умолчанию, вероятно, подойдут, но проверьте их функционирование в вашей среде.The other default settings are probably fine, but review them to make they work for your environment. Затем выберите Создать.When done, select Create.

    Создание проекта

  3. Выберите шаблон, который вы намерены развернуть в диспетчере ресурсов Azure.Choose the template that you want to deploy to Azure Resource Manager. Обратите внимание, что доступны разные варианты, основывающиеся на типе проекта, который вы хотите развернуть.Notice there are many different options based on the type of project you wish to deploy. В этом примере следует выбрать шаблон Веб-приложение и нажать кнопку ОК.For this article, choose the Web app template and OK.

    Выберите шаблон

    Выбор шаблона — это просто отправная точка. Вы можете добавлять и удалять ресурсы для реализации своего сценария.The template you pick is just a starting point; you can add and remove resources to fulfill your scenario.

  4. Visual Studio создает проект развертывания группы ресурсов для веб-приложения.Visual Studio creates a resource group deployment project for the web app. Чтобы увидеть файлы для вашего проекта, посмотрите на узел в проекте развертывания.To see the files for your project, look at the node in the deployment project.

    Отображение узлов

    Так как вы выбрали шаблон "Веб-приложение", отобразятся указанные ниже файлы.Since you chose the Web app template, you see the following files:

    Имя файлаFile name ОПИСАНИЕDescription
    Deploy-AzureResourceGroup.ps1Deploy-AzureResourceGroup.ps1 Сценарий PowerShell, вызывающий команды PowerShell для развертывания в Azure Resource Manager.A PowerShell script that runs PowerShell commands to deploy to Azure Resource Manager. Visual Studio использует этот скрипт PowerShell для развертывания шаблона.Visual Studio uses this PowerShell script to deploy your template.
    WebSite.jsonWebSite.json Шаблон Resource Manager, определяющий инфраструктуру, которую требуется развернуть в Azure, и параметры, которые можно указать во время развертывания.The Resource Manager template that defines the infrastructure you want deploy to Azure, and the parameters you can provide during deployment. Кроме того, он определяет зависимости между ресурсами, благодаря чему Resource Manager развертывает их в правильном порядке.It also defines the dependencies between the resources so Resource Manager deploys the resources in the correct order.
    WebSite.parameters.jsonWebSite.parameters.json Файл параметров, который содержит значения, необходимые для шаблона.A parameters file that has values needed by the template. Это значения, передаваемые для настройки каждого развертывания.You pass in parameter values to customize each deployment.

    Все проекты развертывания группы ресурсов содержат эти основные файлы.All resource group deployment projects have these basic files. Другие проекты могут содержать дополнительные файлы для поддержки других функциональных возможностей.Other projects may have additional files to support other functionality.

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

Вы можете настроить проект развертывания, изменив шаблон Resource Manager, описывающий ресурсы, которые требуется развернуть.You can customize a deployment project by modifying the Resource Manager template that describes the resources you want to deploy. Сведения об элементах шаблона Resource Manager см. в статье Создание шаблонов диспетчера ресурсов Azure.To learn about the elements of the Resource Manager template, see Authoring Azure Resource Manager templates.

  1. Для работы с шаблоном откройте файл WebSite.json.To work on your template, open WebSite.json.

  2. Редактор Visual Studio предоставляет средства, которые помогают изменить шаблон Resource Manager.The Visual Studio editor provides tools to assist you with editing the Resource Manager template. Окно Структура JSON упрощает просмотр элементов, определенных в шаблоне.The JSON Outline window makes it easy to see the elements defined in your template.

    Отображение структуры JSON

  3. Выберите элемент в структуре, чтобы перейти к этой части шаблона.Select an element in the outline to go to that part of the template.

    Переход к JSON

  4. Можно добавить новый ресурс, нажав кнопку Добавить ресурс в верхней части окна структуры JSON. Или же можно щелкнуть правой кнопкой мыши элемент Ресурсы и выбрать команду Добавить новый ресурс.You can add a resource by either selecting the Add Resource button at the top of the JSON Outline window, or by right-clicking resources and selecting Add New Resource.

    Добавление ресурса

  5. Выберите Учетная запись хранения и укажите имя.Select Storage Account and give it a name. Имя учетной записи хранения должно содержать только цифры и строчные буквы, а длина не должна превышать 11 символов.Provide a name that is no more than 11 characters, and only contains numbers and lower-case letters.

    Добавление хранилища

  6. Обратите внимание, что добавляется не только ресурс: для типа учетной записи хранения также будет добавлен параметр, а для ее имени — переменная.Notice that not only was the resource added, but also a parameter for the type storage account, and a variable for the name of the storage account.

    Отображение структуры

  7. В параметре для типа учетной записи хранения предварительно определяются допустимые типы и тип по умолчанию.The parameter for the type of storage account is pre-defined with allowed types and a default type. Вы можете использовать эти значения или изменить их для своего сценария.You can leave these values or edit them for your scenario. Если требуется ограничить доступ к развертыванию учетной записи хранения Premium_LRS с помощью этого шаблона, то удалите его из списка допустимых типов.If you don't want anyone to deploy a Premium_LRS storage account through this template, remove it from the allowed types.

    "demoaccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_ZRS",
        "Standard_GRS",
        "Standard_RAGRS"
      ]
    }
    
  8. Кроме того, Visual Studio предоставляет шаблон IntelliSense, который определяет свойства, доступные при редактировании шаблона.Visual Studio also provides intellisense to help you understand the properties that are available when editing the template. Например, чтобы изменить свойства плана службы приложений, перейдите к ресурсу HostingPlan и задайте значение для параметра properties.For example, to edit the properties for your App Service plan, navigate to the HostingPlan resource, and add a value for the properties. Обратите внимание, что в шаблоне IntelliSense отображаются доступные значения, а также приводится описание каждого значения.Notice that intellisense shows the available values and provides a description of that value.

    Отображение Intellisense

    Можно задать для параметра numberOfWorkers значение 1 и сохранить файл.You can set numberOfWorkers to 1, and save the file.

    "properties": {
      "name": "[parameters('hostingPlanName')]",
      "numberOfWorkers": 1
    }
    
  9. Откройте файл WebSite.parameters.json.Open the WebSite.parameters.json file. Файл параметров используется для передачи во время развертывания значений, на основе которых настраивается развертываемый ресурс.You use the parameters file to pass in values during deployment that customize the resource being deployed. Дайте имя плану размещения и сохраните файл.Give the hosting plan a name, and save the file.

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

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

Теперь все готово для развертывания проекта в группе ресурсов.You're now ready to deploy your project to a resource group.

По умолчанию скрипт PowerShell (Deploy-AzureResourceGroup.ps1) в проекте использует модуль AzureRM.By default, the PowerShell script (Deploy-AzureResourceGroup.ps1) in the project uses the AzureRM module. Если у вас все еще установлен модуль AzureRM и вы хотите продолжить его использование, можно воспользоваться этим скриптом по умолчанию.If you still have the AzureRM module installed and want to continue using it, you can use this default script. При использовании этого скрипта можно развернуть свое решение с помощью интерфейса Visual Studio.With this script, you can use the Visual Studio interface to deploy your solution.

Однако, если вы перешли на новый модуль Az, в проект нужно добавить новый скрипт.However, if you've migrated to the new Az module, you need to add a new script to your project. Чтобы добавить скрипт, использующий модуль Az, скопируйте скрипт Deploy-AzTemplate.ps1 и добавьте его в свой проект.To add a script that uses the Az module, copy the Deploy-AzTemplate.ps1 script and add it to your project. Чтобы использовать этот скрипт для развертывания, необходимо запустить его из консоли PowerShell, а не через интерфейс развертывания Visual Studio.To use this script for deployment, you must run it from a PowerShell console, rather than using Visual Studio's deployment interface.

В этой статье описаны оба подхода.Both approaches are shown in this article. В этой статье скрипт по умолчанию называется скриптом модуля AzureRM, а новый скрипт — скриптом модуля Az.This article refers to the default script as the AzureRM module script, and the new script as the Az module script.

Скрипт модуля AzAz module script

Для скрипта модуля Az откройте консоль PowerShell и запустите:For the Az module script, open a PowerShell console and run:

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

Скрипт модуля AzureRMAzureRM module script

Для скрипта модуля AzureRM используйте Visual Studio:For the AzureRM module script, use Visual Studio:

  1. В контекстном меню узла проекта развертывания последовательно выберите пункты Развернуть > Новое.On the shortcut menu of the deployment project node, choose Deploy > New.

    Пункт меню "Новое развертывание"

  2. Откроется диалоговое окно Развертывание в группе ресурсов .The Deploy to Resource Group dialog box appears. В раскрывающемся списке Группа ресурсов выберите существующую группу ресурсов или создайте новую.In the Resource group dropdown box, choose an existing resource group or create a new one. Выберите Развернуть.Select Deploy.

    Диалоговое окно "Развертывание в группе ресурсов"

  3. Состояние развертывания отображается в окне Выходные данные .In the Output windows, you see the status of the deployment. После успешного завершения развертывания появится примерно такое сообщение:When the deployment has finished, the last message indicates a successful deployment with something similar to:

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

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

Давайте проверим результаты.Let's check the results.

  1. Откройте в браузере портал Azure и войдите в свою учетную запись.In a browser, open the Azure portal and sign in to your account. Чтобы просмотреть группу ресурсов, щелкните Группы ресурсов и укажите группу ресурсов, в которой выполнено развертывание.To see the resource group, select Resource groups and the resource group you deployed to.

  2. Отобразятся все развернутые ресурсы.You see all the deployed resources. Обратите внимание, что имя учетной записи хранения не совпадает с именем, указанным во время добавления этого ресурса.Notice that the name of the storage account isn't exactly what you specified when adding that resource. Учетная запись хранения должна быть уникальной.The storage account must be unique. Шаблон автоматически добавляет строку символов в предоставленное имя, чтобы сделать его уникальным.The template automatically adds a string of characters to the name you provided to create a unique name.

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

Добавление кода в проектAdd code to project

На этом этапе инфраструктура для приложения уже развернута, а фактический код для проекта — еще нет.At this point, you've deployed the infrastructure for your app, but there's no actual code deployed with the project.

  1. Добавьте проект в свое решение Visual Studio.Add a project to your Visual Studio solution. Щелкните правой кнопкой мыши решение и выберите команду Добавить > Новый проект.Right-click the solution, and select Add > New Project.

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

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

    Добавление веб-приложения

  3. Дайте вашему веб-приложению имя и нажмите кнопку Создать.Give your web app a name, and select Create.

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

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

    Выбор веб-приложения

  5. После создания веб-приложения в Visual Studio оба проекта отобразятся в решении.After Visual Studio creates your web app, you see both projects in the solution.

    Отображение проектов

  6. Теперь нужно убедиться, что проект группы ресурсов уведомлен о новом проекте.Now, you need to make sure your resource group project is aware of the new project. Вернитесь к проекту группы ресурсов (ExampleAppDeploy).Go back to your resource group project (ExampleAppDeploy). Щелкните правой кнопкой мыши Ссылки и выберите Добавить ссылку.Right-click References and select Add Reference.

    Ссылка, которую нужно добавить

  7. Выберите созданный проект веб-приложения.Select the web app project that you created.

    Ссылка, которую нужно добавить

    Добавляя ссылку, вы связываете проект веб-приложения с проектом группы ресурсов и автоматически задаете ряд свойств.By adding a reference, you link the web app project to the resource group project, and automatically sets some properties. Свойства отображаются в окне Свойства для ссылки.You see these properties in the Properties window for the reference. Свойство Include File Path (Включать путь к файлу) содержит путь к расположению, в котором будет создан пакет.The Include File Path has the path where the package is created. Обратите внимание на папку (ExampleApp) и файл (package.zip).Note the folder (ExampleApp) and file (package.zip). Эти значения необходимо знать, так как их нужно указывать при развертывании приложения.You need to know these values because you provide them as parameters when deploying the app.

    Просмотр ссылки

  8. Вернитесь к шаблону WebSite.json и добавьте ресурс в шаблон.Go back to your template (WebSite.json) and add a resource to the template.

    Добавление ресурса

  9. На этот раз выберите Веб-развертывание для веб-приложений.This time select Web Deploy for Web Apps.

    Добавление веб-развертывания

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

  10. В вашем шаблоне есть несколько новых параметров.There are some new parameters in your template. Они были добавлены на предыдущем этапе.They were added in the previous step. Вам не нужно задавать значения для параметров _artifactsLocation или _artifactsLocationSasToken, так как эти значения создаются автоматически.You don't need to provide values for _artifactsLocation or _artifactsLocationSasToken because those values are automatically generated. Тем не менее, вы должны задать папку и имя файла, соответствующие пути, по которому расположен пакет развертывания.However, you have to set the folder and file name to the path that contains the deployment package. Имена этих параметров заканчиваются на PackageFolder и PackageFileName.The names of these parameters end with PackageFolder and PackageFileName. Первая часть имени — это имя добавленного вами ресурса веб-развертывания.The first part of the name is the name of the Web Deploy resource you added. В этой статье они названы ExampleAppPackageFolder и ExampleAppPackageFileName.In this article, they're named ExampleAppPackageFolder and ExampleAppPackageFileName.

    Откройте файл Website.parameters.json и установите для этих параметров значения, которые вы видели в справочных свойствах.Open Website.parameters.json and set those parameters to the values you saw in the reference properties. Задайте для параметра ExampleAppPackageFolder имя папки.Set ExampleAppPackageFolder to the name of the folder. Задайте для параметра ExampleAppPackageFileName имя ZIP-файла.Set ExampleAppPackageFileName to the name of the zip file.

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

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

Так как вы добавили код в проект, на этот раз ваше развертывание немного отличается.Because you added code to the project, your deployment is a little different this time. Во время развертывания разместите артефакты для проекта в расположении, к которому сможет обращаться Resource Manager.During deployment, you stage artifacts for your project to a place that Resource Manager can access. Артефакты размещаются в учетной записи хранения.The artifacts are staged to a storage account.

Скрипт модуля AzAz module script

Если вы используете скрипт модуля Az, вам нужно внести одно небольшое изменение в свой шаблон.There's one small change you need to make to your template if you're using the Az module script. Этот скрипт добавляет косую черту к расположению артефактов, но ваш шаблон не ожидает такой косой черты.This script adds a slash to the artifacts location but your template doesn't expect that slash. Откройте файл WebSite.json и найдите свойства для расширения MSDeploy.Open WebSite.json and find the properties for the MSDeploy extension. Он содержит свойство с именем packageUri.It has a property named packageUri. Удалите косую черту между расположением артефактов и папкой пакета.Remove the slash between the artifacts location and the package folder.

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

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

Обратите внимание, что в предыдущем примере нет '/', между параметрами parameters('_artifactsLocation') и parameters('ExampleAppPackageFolder') .Notice in the preceding example there is no '/', between parameters('_artifactsLocation') and parameters('ExampleAppPackageFolder').

Выполните повторную сборку проекта.Rebuild the project. Сборка проекта гарантирует, что файлы, которые нужно развернуть, будут добавлены в промежуточную папку.Building the project makes sure the files you need to deploy are added to the staging folder.

Теперь откройте консоль PowerShell и запустите:Now, open a PowerShell console and run:

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

Скрипт модуля AzureRMAzureRM module script

Для скрипта модуля AzureRM используйте Visual Studio:For the AzureRM module script, use Visual Studio:

  1. Для повторного развертывания щелкните Развернуть и выберите группу ресурсов, которую вы развернули ранее.To redeploy, choose Deploy, and the resource group you deployed earlier.

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

  2. Для параметра Учетная запись хранения артефактов выберите учетную запись, развернутую в этой группе ресурсов.Select the storage account you deployed with this resource group for the Artifact storage account.

    Повторное развертывание веб-развертывания

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

  1. После завершения развертывания выберите веб-приложение на портале.After the deployment has finished, select your web app in the portal. Щелкните URL-адрес, чтобы перейти на сайт.Select the URL to browse to the site.

    Просмотр сайта

  2. Приложение ASP.NET по умолчанию успешно развернуто.Notice that you've successfully deployed the default ASP.NET app.

    Отображение развернутого приложения

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

Вы можете использовать не только ресурсы, доступные через интерфейс Visual Studio.You aren't limited to only the resources that are available through the Visual Studio interface. Развертывание можно настроить, добавив пользовательский ресурс в шаблон.You can customize your deployment by adding a custom resource to your template. Для отображения добавления ресурса следует добавить панель мониторинга операций, позволяющую управлять развертываемым ресурсом.To show adding a resource, you add an operational dashboard to manage the resource you deployed.

  1. Откройте файл WebSite.json и добавьте следующий JSON после ресурса учетной записи хранения, но перед закрывающей скобкой ] раздела ресурсов.Open the WebSite.json file and add the following JSON after the storage account resource but before the closing ] of the resources section.

     ,{
       "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"
             }
           }
         }
       },
       "apiVersion": "2015-08-01-preview",
       "name": "[concat('ARM-',resourceGroup().name)]",
       "type": "Microsoft.Portal/dashboards",
       "location": "[resourceGroup().location]",
       "tags": {
         "hidden-title": "[concat('OPS-',resourceGroup().name)]"
       }
     }
    
  2. Заново разверните проект.Redeploy your project.

  3. После завершения развертывания просмотрите панель мониторинга на портале.After deployment has finished, view your dashboard in the portal. Щелкните Панель мониторинга и выберите ту, которую вы развернули.Select Dashboard and pick the one you deployed.

    Настраиваемая панель мониторинга

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

    Настраиваемая панель мониторинга

Доступом к панели мониторинга можно управлять с помощью групп RBAC.You can manage access to the dashboard by using RBAC groups. Кроме того, после развертывания панели мониторинга можно настроить ее внешний вид.You can also customize the dashboard's appearance after it's deployed. Однако если вы повторно развернете группу ресурсов, панель мониторинга будет сброшена до значений по умолчанию в шаблоне.However, if you redeploy the resource group, the dashboard is reset to its default state in your template. Дополнительные сведения о создании панелей мониторинга см. в статье Создание панелей мониторинга Azure программными средствами.For more information about creating dashboards, see Programmatically create Azure Dashboards.

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

Если ресурсы Azure больше не нужны, их можно удалить. Для этого необходимо удалить группу ресурсов.When the Azure resources are no longer needed, clean up the resources you deployed by deleting the resource group.

  1. На портале Azure в меню слева выберите Группы ресурсов.From the Azure portal, select Resource groups from the left menu.

  2. Выберите имя группы ресурсов.Select the resource group name.

  3. В главном меню выберите Удалить группу ресурсов.Select Delete resource group from the top menu.

Дополнительная информацияNext steps

В этом кратком руководстве вы узнали, как создать и развернуть шаблоны с помощью Visual Studio.In this quickstart, you learned how to create and deploy templates using Visual Studio. В следующем руководстве показано, как в справочнике по шаблону найти информацию, чтобы создать зашифрованную учетную запись хранения Azure.The next tutorial shows you how to find the information from template reference so you can create an encrypted Azure Storage account.