Создание Azure DevTest Labs сред на основе шаблонов ARM

Из этой статьи вы узнаете, как создавать Azure DevTest Labs среды на основе шаблонов Azure Resource Manager (ARM). Среды DevTest Labs можно использовать для простой и согласованной подготовки лабораторий с помощью нескольких виртуальных машин или ресурсов paaS. Например, чтобы создать лабораторию для многоуровневого веб-приложения или фермы SharePoint.

Ресурсы в среде используют один и тот же жизненный цикл, и вы можете управлять ими вместе. Затраты на лабораторные среды и ресурсы PaaS отслеживаются точно так же, как и затраты на отдельные виртуальные машины лаборатории.

Вы можете настроить Azure DevTest Labs для использования шаблонов ARM из общедоступного или частного репозитория Git. Дополнительные сведения о репозиториях шаблонов для лабораторий.

Схема, на которой показано, как создать среду с Azure DevTest Labs из шаблона ARM в общедоступном или пользовательском репозитории шаблонов.

Если вы хотите использовать шаблон ARM для создания ресурса Azure DevTest Labs, см. краткое руководство. Создание лаборатории в DevTest Labs с помощью шаблона ARM.

Ограничения

Учитывайте следующие ограничения при создании лабораторий на основе шаблонов ARM в DevTest Labs:

  • Автоматическое завершение работы виртуальных машин не применяется к ресурсам PaaS.

  • Не все политики лаборатории оцениваются при развертывании шаблонов ARM. К политикам, которые не оцениваются, относятся: количество виртуальных машин на пользователя лаборатории, количество виртуальных машин уровня "Премиум" на пользователя и количество рабочих столов уровня "Премиум" на пользователя. Например, ваша политика лаборатории может разрешать до 5 виртуальных машин на пользователя. Тем не менее пользователь может развернуть шаблон среды ARM, который создает десятки виртуальных машин.

Создание сред на основе шаблонов

Вы можете создать среду из Azure DevTest Labs общедоступного репозитория шаблонов или добавить частный репозиторий шаблонов в лабораторию.

Узнайте, как настроить среды для лаборатории. Например, как настроить репозитории шаблонов, включить или отключить общедоступные среды, а также выбрать определенные шаблоны для создания лабораторий.

Чтобы создать среду на основе шаблона, сделайте следующее:

  1. В портал Azure выберите ресурс лаборатории.

  2. На странице Обзор лаборатории нажмите кнопку Добавить на верхней панели инструментов.

  3. На странице Выбор базы выберите шаблон среды ARM для использования. Доступные шаблоны среды отображаются в списке баз первыми.

    Снимок экрана: отображение шаблонов общедоступных сред.

  4. На экране Добавление введите имя среды и заполните другие поля ввода.

    Количество и тип полей ввода определяется в шаблоне ARM. При необходимости введите значения для полей ввода, которые определены в файле шаблона azuredeploy.parameters.json как пустые или используемые по умолчанию.

    • Для параметров secure string можно использовать секреты, хранящиеся в Azure Key Vault. Сведения о том, как хранить секреты в хранилище ключей и использовать их при создании ресурсов лаборатории, см. в статье Хранение секретов в Azure Key Vault.

    • В файлах шаблонов ARM значения параметров GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEY и GEN-PASSWORD создают пустые поля ввода, чтобы пользователи могли ввести значения.

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

  5. Нажмите кнопку Добавить, чтобы создать среду.

    Сразу начнется процесс подготовки среды. Состояние подготовки можно просмотреть в разделе Мои среды на странице Обзор лаборатории. Подготовка среды может занять много времени.

  6. После создания среды разверните среду в разделе Мои среды , чтобы просмотреть список виртуальных машин и других ресурсов, подготовленных шаблоном.

    Снимок экрана: список виртуальных машин в среде.

    При развертывании создается новая группа ресурсов для подготовки к работе всех ресурсов среды, определенных шаблоном ARM. Выберите имя среды в разделе Мои среды, чтобы просмотреть группу ресурсов и все ресурсы, созданные шаблоном.

    Снимок экрана: отображение группы ресурсов со всеми ресурсами среды.

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

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

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

С помощью Azure DevTest Labs можно создавать среды на основе шаблонов ARM. Шаблоны ARM могут поступать из двух источников:

Совет

Чтобы предложить исправления или дополнения к общедоступным шаблонам, отправьте запрос на вытягивание в общедоступный репозиторий шаблонов GitHub с открытым кодом.

Настройка параметров общедоступной среды для лаборатории

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

Кроме того, можно выбрать шаблоны, доступные пользователям для создания сред.

Включение общедоступных сред при создании лаборатории

Чтобы включить доступ к общедоступному репозиторию среды для лаборатории при создании лаборатории, выполните следующие действия.

  1. Перейдите на вкладку Основные параметры при создании ресурса DevTest Labs.

  2. Выберите Включено в поле Общедоступные среды .

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

Включение и отключение общедоступных сред для существующих лабораторий

Для существующих лабораторий или лабораторий, создаваемых с помощью шаблона ARM, общедоступные среды могут быть не включены. Чтобы включить или отключить общедоступный репозиторий сред для существующих лабораторий, сделайте следующее:

  1. В портал Azure выберите ресурс лаборатории.

  2. В области навигации слева выберите Конфигурация и политики.

  3. Выберите Общедоступные среды в разделе Базы виртуальных машин в области навигации слева.

  4. Выберите Да или Нет для параметра Включить общедоступные среды для этой лаборатории, чтобы включить или отключить общедоступные среды для лаборатории.

  5. Щелкните Сохранить.

Выбор доступных шаблонов общедоступных сред

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

  1. В портал Azure выберите ресурс лаборатории.

  2. В области навигации слева выберите Конфигурация и политики.

  3. Выберите Общедоступные среды в разделе Базы виртуальных машин в области навигации слева.

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

    Снимок экрана: список общедоступных сред для лаборатории.

Настройка прав пользователя среды

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

  1. В портал Azure выберите ресурс лаборатории.

  2. В области навигации слева выберите Конфигурация и политики.

  3. Выберите Параметры лаборатории в области навигации слева.

  4. В разделе Доступ к> средеПрава пользователя группы ресурсов выберите Участник, а затем нажмите кнопку Сохранить.

    Снимок экрана: отображение настройки разрешений участника пользователя лаборатории.

Автоматизация создания среды

Если необходимо создать несколько сред для сценариев разработки или тестирования, вы можете автоматизировать развертывание среды с помощью Azure PowerShell или Azure CLI.

Для создания сред можно использовать команду az deployment group create в Azure CLI. Дополнительные сведения см. в статье Развертывание ресурсов с использованием шаблонов Resource Manager и Azure CLI.

Владельцы и администраторы лаборатории могут использовать Azure PowerShell для создания виртуальных машин и сред из шаблонов ARM.

Примечание

Для взаимодействия с Azure рекомендуется использовать модуль Azure Az PowerShell. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Чтобы автоматизировать развертывание шаблона среды ARM с помощью Azure PowerShell, сделайте следующее:

  1. Запишите шаблон среды ARM после изменений обратно в репозиторий Git и добавьте репозиторий в библиотеку.

  2. Сохраните приведенный скрипт 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 Git repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to be passed 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 will be "-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 that has the 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 the 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 the 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."
    
  3. Выполните скрипт, используя собственные значения вместо следующих примеров значений:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (папка шаблонов в репозитории Git)
    • EnvironmentName
    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
    

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