Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте среды Azure DevTest Labs, чтобы легко и стабильно предоставлять лабораториям несколько виртуальных машин (VM) и ресурсы платформы как услуги (PaaS). В этой статье описывается создание сред DevTest Labs из шаблонов Azure Resource Manager (ARM ). Используйте этот подход для создания лаборатории для многоуровневого веб-приложения, например, веб-приложения с SQL-базой данных.
Ресурсы в среде DevTest Labs используют одинаковый жизненный цикл. Вы можете управлять ими вместе и отслеживать затраты отдельных ресурсов PaaS в лабораторной среде так же, как и отслеживать затраты на отдельные виртуальные машины.
Вы можете настроить лабораторию для использования шаблонов среды ARM из общедоступных или частных репозиториев шаблонов Git. На следующей схеме показано, как DevTest Labs использует шаблон ARM из общедоступного или частного репозитория для развертывания среды, содержащей виртуальные машины и другие ресурсы.
Предварительные требования
- Чтобы добавить или настроить репозитории шаблонов для лаборатории, необходимо иметь по крайней мере разрешения участника в лаборатории.
- Для создания сред DevTest Labs из доступных шаблонов ARM требуется как минимум уровень разрешений DevTest User в лаборатории.
- Чтобы запустить скрипт PowerShell в автоматизированной среде создания, используется Azure PowerShell с установленным модулем
Az.Resources.
Назначать права подписки для развертывания шаблонов
Если вашей организации нужны права подписки для управления делегированными шаблонами, назначьте роль Службы лабораторий Azure Contributor в области подписки.
Important
Для создания среды DevTest Labs пользователям лаборатории всё равно нужны как минимум права DevTest User на лаборатории. Роль Службы лабораторий Azure Contributor не заменяет разрешения на уровне лаборатории DevTest Labs.
- В портале Azure откройте подписку.
- Выберите элемент управления доступом (IAM)>Добавить>Добавить назначение роли.
- Найдите и выберите Службы лабораторий Azure Contributor.
- Выберите «Далее», выберите пользователя, группу или принципал сервиса, а затем выберите «Просмотр» + «Назначить».
Для доступа с наименьшими привилегиями используйте пользовательскую роль, включающую только права, требуемые для вашего шаблона и лабораторного рабочего процесса, вместо широких подписных прав.
Следующий пример настраиваемой роли ограничивает доступ к созданию сред в DevTest Labs и просмотру развертываний. Добавьте только те действия, которые требуют ваш шаблон.
{
"Name": "DevTest Labs Environment Template Deployer",
"Description": "Create and read DevTest Labs environments from approved ARM templates.",
"Actions": [
"Microsoft.Authorization/*/read",
"Microsoft.DevTestLab/labs/read",
"Microsoft.DevTestLab/labs/EnsureCurrentUserProfile/action",
"Microsoft.DevTestLab/labs/CreateEnvironment/action",
"Microsoft.DevTestLab/labs/artifactSources/armTemplates/read",
"Microsoft.DevTestLab/labs/policySets/EvaluatePolicies/action",
"Microsoft.DevTestLab/labs/users/environments/read",
"Microsoft.DevTestLab/labs/users/environments/write",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/operations/read",
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/<subscription-id>"
]
}
Ограничения
Среды, созданные из шаблонов среды ARM в DevTest Labs, имеют следующие ограничения:
Функция автозапуска для виртуальных машин не поддерживается.
Следующие политики лаборатории не применяются или не оцениваются.
- Количество виртуальных машин на пользователя лаборатории
- Количество виртуальных машин категории "Премиум" на пользователя
- Количество дисков уровня "Премиум" на пользователя
Например, даже если политика лаборатории позволяет каждому пользователю создавать не более пяти виртуальных машин, пользователь может развернуть шаблон среды ARM, который создает десятки виртуальных машин.
Настройка репозиториев шаблонов для лабораторий
Вы можете настроить лабораторию для использования шаблонов среды ARM из общедоступного репозитория шаблонов ARM DevTest Labs и других общедоступных или частных репозиториев Git. Когда вы включите доступ лаборатории к репозиторию шаблонов, пользователи лаборатории могут быстро создавать среды, выбирая шаблоны в портале Azure.
Публичный репозиторий шаблонов ARM DevTest Labs включает заранее созданные шаблоны среды, такие как Web App with SQL Database и образцы кластера Azure Service Fabric. Для плавного начала работы с ресурсами PaaS шаблоны имеют минимальные входные параметры.
Вы можете использовать общедоступные шаблоны среды как есть или настроить их в соответствии с вашими потребностями. Вы также можете предложить изменения или дополнения в общедоступный шаблон, отправив pull request в репозиторий общедоступных шаблонов на GitHub.
Вы также можете хранить шаблоны среды в других общедоступных или частных репозиториях Git и добавлять эти репозитории в лабораторию, чтобы сделать шаблоны доступными для всех пользователей лаборатории. Инструкции см. в разделе "Сохранение шаблонов ARM в репозиториях Git" и в разделе "Добавление репозиториев шаблонов в лаборатории".
Настройка параметров общедоступной среды
Вы можете включить доступ к общедоступному репозиторию шаблонов DevTest Labs для новой или существующей лаборатории. При предоставлении доступа к репозиторию можно выбрать шаблоны окружения, чтобы сделать их доступными для пользователей лаборатории.
Настройка доступа к общедоступной среде для новой лаборатории
Чтобы настроить доступ к репозиторию общедоступной среды при создании новой лаборатории, на вкладке "Основные параметры " установите для параметра "Общедоступные среды " значение "Вкл ." или "Выкл.". Этот параметр имеет значение On по умолчанию.
Настройка доступа к общедоступной среде для существующей лаборатории
Чтобы включить или отключить доступ к общедоступному репозиторию среды для существующей лаборатории, выполните следующие действия.
На странице обзорапортала Azure для лаборатории выберите "Конфигурация" и "Политики" в разделе "Параметры" в меню навигации слева.
На странице "Конфигурация и политики" разверните базы виртуальных машин в меню слева и выберите общедоступные среды.
На странице "Общедоступные среды " задайте для параметра "Включить общедоступные среды" для этого параметра лаборатории значение "Да " или "Нет".
Выберите Сохранить.
Выбор доступных шаблонов общедоступных сред
Если включить репозиторий общедоступной среды для лаборатории, все шаблоны среды в репозитории доступны пользователям лаборатории по умолчанию. Вы можете отключить доступ к выбранным шаблонам. Отключенные шаблоны больше не отображаются в списке сред, которые пользователи могут создавать.
Чтобы запретить доступ к определенным шаблонам среды, выполните указанные действия.
На портале Azure вашей лаборатории на странице конфигурации и политик>баз виртуальных машин>общедоступные среды снимите флажки рядом со средами, которые требуется отключить.
Выберите Сохранить.
Настройка разрешений пользователя среды
По умолчанию лабораторным пользователям назначается роль Читателя в созданных ими средах. Читатели не могут останавливать, запускать или изменять ресурсы среды, такие как серверы SQL или базы данных. Чтобы пользователи лаборатории могли редактировать ресурсы в своих средах, предоставьте им роль участников в группе ресурсов своей среды.
На странице обзорапортала Azure для лаборатории выберите "Конфигурация" и "Политики" в разделе "Параметры" в меню навигации слева.
На странице "Конфигурация и политики" разверните раздел "Параметры " в меню слева и выберите "Параметры лаборатории".
На странице параметров лаборатории в разделе Доступ к среде задайте для параметра права пользователя группы ресурсов значение Участник.
Выберите Сохранить.
Создание сред на основе шаблонов
Если вы настроите лабораторию на использование публичных или приватных репозиториев шаблонов, вы можете создать среду, выбрав доступный шаблон ARM. Выполните следующие действия, чтобы создать среду из шаблона.
На странице портала AzureОбзор для вашей лаборатории выберите Мои среды в разделе Моя лаборатория в левом меню навигации.
На странице "Мои среды " нажмите кнопку "Добавить".
На странице «Выбрать базовую » выберите «Веб-приложение с базой данных SQL».
В панели «Добавить » введите имя среды и настройте другие параметры для веб-приложения и ресурсов базы данных SQL.
- Каждый шаблон среды 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. Выберите среду в списке "Мои среды ", чтобы просмотреть группу ресурсов и все ресурсы, созданные шаблоном.
Выберите ресурс в списке, чтобы увидеть свойства и доступные действия.
Автоматизация создания сред
Если вам нужно создать несколько сред для сценариев разработки или тестирования, можно использовать Azure PowerShell или Azure CLI для автоматизации развертывания среды из шаблонов ARM. Ниже показано, как автоматизировать развертывание шаблона среды ARM с помощью команды Azure PowerShell New-AzResource .
Вы также можете автоматизировать развертывание с помощью команды Azure CLI az deployment group create. Дополнительные сведения см. в статье "Развертывание ресурсов с помощью шаблонов ARM и Azure CLI".
Сохраните шаблон среды ARM в репозитории Git и добавьте репозиторий в лабораторию.
Сохраните следующий скрипт 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."Чтобы использовать скрипт, выполните следующую команду. Обновите заполнители в команде собственными значениями лаборатории.
.\DeployLabEnvironment.ps1 ` -SubscriptionId "<Subscription ID>" ` -LabName "<LabName>" ` -ResourceGroupName "<LabResourceGroupName>" ` -RepositoryName "<TemplateRepoName>" ` -TemplateName "<TemplateFolderName>" ` -EnvironmentName "<EnvironmentName>"