Создание сред Azure DevTest Labs из шаблонов ARM
Из этой статьи вы узнаете, как создать среды Azure DevTest Labs из шаблонов Azure Resource Manager (ARM ). Среды DevTest Labs можно использовать для легкой и согласованной подготовки лабораторий с несколькими виртуальными машинами (виртуальными машинами) или ресурсами paaS как услуга. Этот подход можно использовать для создания лаборатории для многоуровневого веб-приложения или фермы SharePoint.
Ресурсы в среде DevTest Labs используют одинаковый жизненный цикл, и вы можете управлять ими вместе. Вы можете отслеживать затраты на лабораторные среды и ресурсы PaaS таким же образом, как и для отдельных виртуальных машин лаборатории.
Вы можете настроить Azure DevTest Labs для использования шаблонов ARM из общедоступного или частного репозитория GitHub. На следующей схеме показано, как создать среду с devTest Labs из шаблона ARM в общедоступном или пользовательском репозитории шаблонов. В разделе репозиториев шаблонов для лабораторий подробно описывается этот процесс.
Примечание.
Среды развертывания Azure (ADE) настоятельно рекомендуется создавать среды. ADE позволяет разработчикам быстро развертывать инфраструктуру приложений с помощью шаблонов на основе проектов, обеспечивая согласованные и безопасные среды для команд разработчиков.
Дополнительные сведения о средах развертывания Azure см . в документации по средам развертывания Azure.
Необходимые компоненты
- Полезно настроить лабораторные среды в DevTest Labs. Если вы не знакомы с лабораториями, ознакомьтесь с инструкциями в разделе "Настройка параметров общедоступной среды". Необходимо понять, как настроить репозитории шаблонов, включить или отключить общедоступные среды и выбрать шаблоны для создания лабораторий.
Ограничения
При создании лабораторий из шаблонов ARM в DevTest Labs следует учитывать несколько ограничений.
DevTest Labs не поддерживает функцию автоматического завершения работы виртуальных машин для ресурсов PaaS, созданных из шаблонов ARM.
DevTest Labs не оценивает все политики лабораторий при развертывании шаблонов ARM. Следующие политики не оцениваются:
- Количество виртуальных машин на пользователя лаборатории
- Количество виртуальных машин категории "Премиум" на пользователя
- Количество рабочих столов premium на пользователя
Предположим, у вас есть политика лаборатории, которая позволяет каждому пользователю создавать не более пяти виртуальных машин. В DevTest Labs каждый пользователь может развернуть шаблон среды ARM, который создает десятки виртуальных машин.
Создание сред на основе шаблонов
Вы можете создать среду из общедоступного репозитория шаблонов Azure DevTest Labs или добавить в лабораторию частный репозиторий шаблонов.
Создайте среду из шаблона, выполнив следующие действия:
В портал Azure перейдите к ресурсу лаборатории DevTest Labs.
На странице обзора лаборатории разверните раздел "Моя лаборатория" в меню слева и выберите "Мои среды".
На странице "Мои среды" выберите "Добавить" на панели инструментов.
На базовой странице выберите шаблон среды ARM для использования:
В области "Добавить" введите имя среды и настройте другие параметры параметров.
Тип и количество параметров уникально для каждого шаблона ARM. Красная звездочка (*) указывает обязательный параметр. Необходимо ввести значения для всех обязательных параметров.
Некоторые значения параметров в файле шаблона ARM (azuredeploy.parameters.json) создают пустые поля параметров на панели "Добавить" (значение по умолчанию не используется). К этим значениям параметров относятся
GEN-UNIQUE
, ,GEN-UNIQUE-[N]
GEN-SSH-PUB-KEY
иGEN-PASSWORD
.Для безопасных параметров строки , таких как пароли, можно использовать секреты из Azure Key Vault. Сведения о том, как хранить секреты в хранилище ключей и использовать их при создании ресурсов лаборатории, см. в статье "Хранилище секретов" в Azure Key Vault.
Нажмите кнопку Добавить, чтобы создать среду. Сразу начнется процесс подготовки среды.
Примечание.
Процесс подготовки среды может занять много времени. Общее время зависит от количества экземпляров служб, виртуальных машин и других ресурсов, создаваемых DevTest Labs в рамках лабораторной среды.
Чтобы отслеживать состояние подготовки, вернитесь на страницу "Мои среды " для лаборатории:
Во время подготовки состояние среды создается. После завершения подготовки состояние изменится на Ready. Вы можете выбрать "Обновить" на панели инструментов, чтобы обновить представление страницы и проверить текущее состояние.
Когда среда готова, вы можете развернуть среду в списке "Мои среды ", чтобы просмотреть виртуальные машины, подготовленные шаблоном:
Развертывание создает новую группу ресурсов для подготовки всех ресурсов среды, определенных шаблоном ARM. Выберите имя среды в списке "Мои среды ", чтобы просмотреть группу ресурсов и все ресурсы, созданные шаблоном:
Выберите виртуальную машину среды в списке, чтобы просмотреть доступные действия для виртуальной машины, например управление конфигурацией, расписаниями и политиками:
Изучение репозиториев шаблонов
Шаблоны ARM для создания сред в DevTest Labs доступны из двух источников:
DevTest Labs имеет общедоступный репозиторий шаблонов ARM, который включает предварительно подготовленные шаблоны среды для Azure веб-приложения, кластер Azure Service Fabric и фермы SharePoint для разработки. Шаблоны имеют минимальные входные параметры для плавного начала работы с ресурсами PaaS. Вы можете использовать общедоступные шаблоны среды как есть или настроить их в соответствии с вашими потребностями. Вы также можете предложить изменения или дополнения к общедоступному шаблону, отправив запрос на вытягивание в репозиторий общедоступных шаблонов GitHub.
Вы можете хранить шаблоны среды в собственных общедоступных или частных репозиториях GitHub и добавлять эти репозитории в лабораторию, чтобы сделать шаблоны доступными для всех пользователей лаборатории .
Настройка параметров общедоступной среды
Вы можете настроить лабораторию, чтобы включить использование шаблонов из общедоступного репозитория шаблонов GitHub. При включении общедоступного репозитория шаблонов для лаборатории пользователи могут быстро создать среду лаборатории, выбрав эти шаблоны непосредственно в портал Azure, как они создают виртуальную машину в лаборатории. Кроме того, можно выбрать, какие шаблоны доступны пользователям для создания лабораторных сред.
Настройка доступа к общедоступной среде для новой лаборатории
Настройте доступ к общедоступному репозиторию среды для новой лаборатории, выполнив следующие действия.
Во время процесса создания ресурса DevTest Labs выберите вкладку "Основные параметры ".
Установите для параметра "Общедоступные среды" значение "Вкл.":
Настройка доступа к общедоступной среде для существующих лабораторий
Для существующих лабораторий или лабораторий, создаваемых с помощью шаблона ARM, общедоступные среды могут не включаться. Вы можете управлять доступом к общедоступным репозиториям среды для любой существующей лаборатории с помощью параметра "Включить общедоступные среды" для этой лаборатории .
Выполните следующие действия, чтобы включить или отключить доступ к общедоступному репозиторию среды для любой существующей лаборатории:
В портал Azure перейдите к ресурсу лаборатории DevTest Labs, где необходимо задать доступ к общедоступной среде.
На странице обзора лаборатории разверните раздел "Параметры" в меню слева и выберите "Конфигурация" и "Политики".
На странице "Конфигурация и политики" разверните раздел "Базы виртуальных машин" в меню слева и выберите "Общедоступные среды".
На странице "Общедоступные среды" задайте для параметра "Включить общедоступные среды" для этого параметра лаборатории значение "Да":
Выберите Сохранить.
Выбор доступных шаблонов общедоступных сред
При настройке параметра "Включить общедоступные среды" для этой лаборатории для управления доступом к общедоступным средам для лаборатории все шаблоны среды выбираются по умолчанию. Параметр либо разрешает, либо запрещает доступ ко всем средам на основе выбранного варианта. С помощью флажков выбора в списке можно указать, к каким средам пользователи могут получить доступ.
Выполните следующие действия, чтобы разрешить доступ только к определенным средам для лаборатории:
На странице "Общедоступные среды" задайте для этого параметра "Включить общедоступные среды" значение "Да".
Отмените выбор определенных сред в списке, чтобы сделать их недоступными для пользователей лаборатории:
Выберите Сохранить.
Настройка прав пользователя среды
По умолчанию пользователям лаборатории назначается роль читателя в репозиториях общедоступных сред. Они не могут изменять ресурсы среды, и они не могут останавливать или запускать ресурсы.
Выполните следующие действия, чтобы предоставить пользователям лаборатории роль участника и разрешить им изменять ресурсы среды:
В портал Azure перейдите к ресурсу лаборатории DevTest Labs, где необходимо настроить назначения ролей пользователей.
На странице обзора лаборатории разверните раздел "Параметры" в меню слева и выберите "Конфигурация" и "Политики".
На странице "Конфигурация и политики" разверните раздел "Параметры" в меню слева и выберите параметры лаборатории.
На странице параметров лаборатории задайте для параметра "Доступ к>группе ресурсов среды" значение "Участник":
Выберите Сохранить.
Автоматизация создания сред
Если необходимо создать несколько сред для сценариев разработки или тестирования, можно автоматизировать развертывание среды с помощью Azure PowerShell или Azure CLI.
Владельцы и администраторы лаборатории могут использовать Azure PowerShell для создания виртуальных машин и сред из шаблонов ARM. Вы также можете автоматизировать развертывание с помощью Azure CLI с помощью команды az deployment group create для создания сред. Дополнительные сведения см. в статье "Развертывание ресурсов с помощью шаблонов ARM и Azure CLI".
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Автоматизация развертывания шаблона среды ARM с помощью Azure PowerShell с помощью следующих действий.
Сохраните следующий скрипт PowerShell на компьютере с именем файла deployenv.ps1. Этот скрипт вызывает шаблон ARM для создания среды в лаборатории.
#Requires -Module Az.Resources [CmdletBinding()] param ( # ID of the Azure subscription for the lab [string] [Parameter(Mandatory=$true)] $SubscriptionId, # Name of the lab in which to create the environment [string] [Parameter(Mandatory=$true)] $LabName, # Name of the template repository connected to the lab [string] [Parameter(Mandatory=$true)] $RepositoryName, # Name of the template (folder name in the GitHub repository) [string] [Parameter(Mandatory=$true)] $TemplateName, # Name of the environment to create in the lab [string] [Parameter(Mandatory=$true)] $EnvironmentName, # The parameters to pass to the template. Each parameter is prefixed with "-param_". # For example, if the template has a parameter named "TestVMName" with a value of "MyVMName", # the string in $Params is "-param_TestVMName MyVMName". # This convention allows the script to dynamically handle different templates. [Parameter(ValueFromRemainingArguments=$true)] $Params ) # Sign in to Azure, or comment out this statement to completely automate environment creation. Connect-AzAccount # Select the subscription for your lab. Set-AzContext -SubscriptionId $SubscriptionId | Out-Null # Get the user ID to use later in the script. $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id) # Get the lab location. $lab = Get-AzResource -ResourceType "Microsoft.DevTestLab/labs" -Name $LabName if ($lab -eq $null) { throw "Unable to find lab $LabName in subscription $SubscriptionId." } # Get information about the repository connected to your lab. $repository = Get-AzResource -ResourceGroupName $lab.ResourceGroupName ` -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' ` -ResourceName $LabName ` -ApiVersion 2016-05-15 ` | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } ` | Select-Object -First 1 if ($repository -eq $null) { throw "Unable to find repository $RepositoryName in lab $LabName." } # Get information about the ARM template base for the environment. $template = Get-AzResource -ResourceGroupName $lab.ResourceGroupName ` -ResourceType "Microsoft.DevTestLab/labs/artifactSources/armTemplates" ` -ResourceName "$LabName/$($repository.Name)" ` -ApiVersion 2016-05-15 ` | Where-Object { $TemplateName -in ($_.Name, $_.Properties.displayName) } ` | Select-Object -First 1 if ($template -eq $null) { throw "Unable to find template $TemplateName in lab $LabName." } # Build the template parameters by using parameter names and values. $parameters = Get-Member -InputObject $template.Properties.contents.parameters -MemberType NoteProperty | Select-Object -ExpandProperty Name $templateParameters = @() # Extract the custom parameters from $Params and format them as name/value pairs. $Params | ForEach-Object { if ($_ -match '^-param_(.*)' -and $Matches[1] -in $parameters) { $name = $Matches[1] } elseif ( $name ) { $templateParameters += @{ "name" = "$name"; "value" = "$_" } $name = $null #reset name variable } } # Create an object to hold the necessary template properties. $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; } # Deploy the environment in your lab by using the New-AzResource command. New-AzResource -Location $Lab.Location ` -ResourceGroupName $lab.ResourceGroupName ` -Properties $templateProperties ` -ResourceType 'Microsoft.DevTestLab/labs/users/environments' ` -ResourceName "$LabName/$UserId/$EnvironmentName" ` -ApiVersion '2016-05-15' -Force Write-Output "Environment $EnvironmentName completed."
Обновите следующие заполнители в скрипте с собственными значениями лаборатории:
SubscriptionId
LabName
ResourceGroupName
RepositoryName
TemplateName
(папка шаблона в репозитории GitHub)EnvironmentName
В следующем фрагменте кода показано, как запустить скрипт с примерами значений параметров:
./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
Выполните скрипт.