Интеграция Azure DevTest Labs в конвейеры Azure Pipelines

Для объединения Azure DevTest Labs с конвейерами непрерывной поставки и непрерывной интеграции (CI/CD) Azure Pipelines можно использовать расширение Azure DevTest Labs Tasks. Расширение устанавливает несколько задач в Azure Pipelines, включая:

  • Создание виртуальной машины.
  • Создание пользовательского образа из виртуальной машины
  • Удаление виртуальной машины

Эти задачи помогают, к примеру, быстро развернуть виртуальную машину с эталонного образа, запустить определенный тест и удалить виртуальную машину.

В этой статье описано, как воспользоваться Azure DevTest Labs Tasks для создания и развертывания виртуальной машины, создания пользовательского образа и для удаления виртуальной машины и все это реализовать как один комплексный конвейер выпуска. Эти задачи обычно выполняются по отдельности в собственных конвейерах сборки, тестирования и развертывания.

Начало работы с Azure DevTest Labs

Впервые работаете с Azure? Создайте бесплатную учетную запись Azure.

Уже используете Azure? Начало работы с первой лабораторией в DevTest Labs: начало работы с Azure DevTest Labs за считанные минуты.

Предварительные требования

  • На портале Azure создайте тестовую службу DevTest Labs или используйте существующую.

  • Зарегистрируйтесь или войдите в организацию Azure DevOps Services, создайте проект или используйте существующий проект.

  • Установите расширение Azure DevTest Labs Tasks из Visual Studio Marketplace:

    1. Перейдите на страницу расширения Задачи Azure DevTest Labs.
    2. Выберите Получить бесплатно.
    3. Выберите организацию Azure DevOps Services в раскрывающемся списке и нажмите кнопку Установить.

Создание шаблона для создания виртуальной машины для тестовой службы

Сначала создайте шаблон Azure Resource Manager (ARM), который создает виртуальную машину тестовой службы по запросу.

  1. В тестовой службе на портале Azure выберите Добавить в верхней строке меню.
  2. На экране Выбор базы выберите базовый образ Windows для виртуальной машины.
  3. На экране Создание ресурса тестовой службы в разделе Артефакты выберите Добавить или удалить артефакты.
  4. На экране Добавление артефактов выполните поиск по запросу winrm, а затем щелкните стрелку рядом с пунктом Настройка WinRM.
  5. На панели Добавление артефакта введите полное доменное имя виртуальной машины, например contosolab00000000000000.westus3.cloudapp.azure.com. Щелкните ОК, а затем снова ОК.
  6. Перейдите на вкладку Расширенные параметры и в поле IP-адрес выберите значение Общедоступный.

    Примечание

    При использовании артефакта WinRM с общим IP-адресом необходимо добавить правило преобразования сетевых адресов (NAT) для сопоставления внешнего порта с портом WinRM. При создании виртуальной машины с общедоступным IP-адресом правило NAT не требуется. Для этого упражнения создайте виртуальную машину с общедоступным IP-адресом.

  7. Выберите Просмотреть шаблон ARM.
  8. Скопируйте код шаблона и сохраните его как файл с именем CreateVMTemplate.json в локальной ветви системы управления версиями.
  9. Запишите шаблон в систему управления исходным кодом проекта.

Дополнительные и более подробные сведения см. в статье Использование шаблона Диспетчера ресурсов.

Создайте скрипт для получения свойств виртуальной машины

Затем создайте скрипт для получения значений, которые используются в таких этапах выполнения задач, как, Копирование файлов Azure и PowerShell на целевых компьютерах, для развертывания приложений на виртуальных машинах. Эти задачи обычно используются для развертывания собственных приложений на виртуальных машинах Azure. Для выполнения задач необходимы такие значения, как имя группы ресурсов, IP-адрес и полное доменное имя виртуальной машины.

Примечание

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

Сохраните следующий скрипт под таким именем, как GetLabVMParams.ps1, и запишите его в систему управления исходным кодом проекта.

Param( [string] $labVmId)

$labVmComputeId = (Get-AzResource -Id $labVmId).Properties.ComputeId

# Get lab VM resource group name
$labVmRgName = (Get-AzResource -Id $labVmComputeId).ResourceGroupName

# Get the lab VM Name
$labVmName = (Get-AzResource -Id $labVmId).Name

# Get lab VM public IP address
$labVMIpAddress = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress

# Get lab VM FQDN
$labVMFqdn = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).DnsSettings.Fqdn

# Set a variable labVmRgName to store the lab VM resource group name
Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"

# Set a variable labVMIpAddress to store the lab VM Ip address
Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"

# Set a variable labVMFqdn to store the lab VM FQDN name
Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"

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

Далее создайте конвейер выпуска в Azure Pipelines. Задачи конвейера используют значения, которые вы присвоили виртуальной машине при создании шаблона ARM.

  1. На странице проекта Azure DevOps Services в области навигации слева выберите Конвейеры>Выпуски.
  2. Выберите Создание конвейера.
  3. На панели Выбор шаблона выберите Пустое задание.
  4. Закройте область Этап .
  5. На странице Новый конвейер выпуска откройте вкладку Переменные.
  6. Выберите Добавить и введите следующие пары Имени и Значения, выбирая Добавить после добавления каждого из них.
    • vmName: имя виртуальной машины, назначенное в шаблоне ARM.
    • userName— имя пользователя для доступа к виртуальной машине.
    • password: пароль для имени пользователя. Используйте значок в виде замка для скрытия и защиты пароля.

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

  1. На странице конвейера нового выпуска на вкладке Конвейер выберите Добавить артефакт.
  2. На панели Добавление артефакта выберите Azure Repo.
  3. В списке Проект выберите проект DevOps.
  4. В списке Источник (репозиторий) выберите исходный репозиторий.
  5. В списке Ветвь по умолчанию выберите ветвь для проверка.
  6. Выберите Добавить.

Создание виртуальной машины DevTest Labs

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

  1. На странице нового конвейера выпуска на вкладке Конвейер выберите текст гиперссылки в поле Этап 1.

  2. На панели слева щелкните значок плюса + рядом с элементом Задание агента.

  3. В разделе Добавление задач в области справа выполните поиск и выберите Создание виртуальной машины Azure DevTest Labs, а затем щелкните Добавить.

  4. На панели слева выберите задачу Создать виртуальную машину Azure DevTest Labs.

  5. В области справа заполните форму следующим образом:

    • Подписка Azure RM. Выберите подключение службы или подписку в раскрывающемся списке и при необходимости выберите Авторизовать.

      Примечание

      Сведения о создании подключения к подписке Azure с более ограниченными разрешениями см. в разделе Конечная точка службы Azure Resource Manager.

    • Тестовая служба. Выберите имя тестовой службы DevTest Labs.

    • Имя виртуальной машины: переменная, указанная для имени виртуальной машины: $vmName.

    • Шаблон. Найдите и выберите файл шаблона, который вы записали в репозиторий проекта.

    • Файл параметров. Если вы проверили файл параметров в репозитории, перейдите к нему и выберите его.

    • Переопределения параметров. Введите -newVMName '$(vmName)' -userName '$(userName)' -password '$(password)'.

    • Откройте раскрывающийся список Выходные переменные и в поле Имя ссылки введите переменную для созданного идентификатора виртуальной машины для тестовой службы. Давайте введем виртуальную машину в поле Имя ссылки для простоты. labVmId будет атрибутом этой переменной, а позже будет называться $vm.labVmId. Если вы используете любое другое имя, не забудьте использовать его соответствующим образом в последующих задачах.

      Идентификатор виртуальной машины лаборатории будет иметь следующий вид: /subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName}.

Сбор сведений о виртуальной машине DevTest Labs

Далее конвейер выполняет скрипт, созданный ранее, для сбора подробных сведений о виртуальной машине DevTest Labs.

  1. На вкладке Задачи конвейера выпуска щелкните знак + "плюс" рядом с пунктом Задание агента.
  2. В разделе Добавление задач в области справа выполните поиск и выберите элемент Azure PowerShell, а затем щелкните Добавить.
  3. На панели слева выберите Скрипт Azure PowerShell: FilePath.
  4. В области справа заполните форму следующим образом:
    • Подписка Azure: выберите подключение к службе или подписку.
    • Тип скрипта: выберите Путь к файлу скрипта.
    • Путь к сценарию: найдите и выберите скрипт PowerShell, который вы записали в репозиторий исходного кода. Для упрощения пути можно использовать встроенные свойства, например: $(System.DefaultWorkingDirectory/Scripts/GetLabVMParams.ps1.
    • Аргументы скрипта. Введите значение -labVmId $(vm.labVmId).

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

Создание образа виртуальной машины на основе виртуальной машины DevTest Labs

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

  1. На вкладке Задачи конвейера выпуска щелкните знак + "плюс" рядом с пунктом Задание агента.
  2. В параметре Добавление задач выберите Azure DevTest Labs Create VM и нажмите кнопку Добавить.
  3. В левой области выберите задачу Создать пользовательский образ Azure DevTest Labs.
  4. В области справа заполните форму следующим образом:
    • Подписка Azure RM: выберите подключение к службе или подписку.
    • Тестовая служба: выберите тестовую службу.
    • Имя пользовательского образа: введите имя пользовательского образа.
    • Описание: введите описание (необязательно), чтобы в дальнейшем облегчить выбор нужного образа.
    • Исходная виртуальная машина для тестовой службы: labVmId источника. Введите значение $(vm.labVmId).
    • Выходные переменные: при необходимости можно изменить имя переменной идентификатора пользовательского образа по умолчанию.

Развертывание приложения на новой виртуальной машине DevTest Labs (необязательно)

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

Обычно для развертывания приложений используются задачи Копирование файлов Azure и PowerShell на целевых компьютерах. Информация о виртуальной машине, необходимая для работы с параметрами этих задач, хранится в трех переменных конфигурации под именамиlabVmRgName, labVMIpAddress и labVMFqdn в конвейере выпуска.

Удаление виртуальной машины

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

  1. На вкладке Задачи конвейера выпуска щелкните знак + "плюс" рядом с пунктом Задание агента.
  2. В параметре Добавление задач выберите Azure DevTest Labs Delete VM и нажмите кнопку Добавить.
  3. Настройте задачу следующим образом.
    • Подписка Azure RM: выберите подключение к службе или подписку.
    • Тестовая служба: выберите тестовую службу.
    • Виртуальная машина: введите значение $(vm.labVmId).
    • Выходные переменные: поле Имя ссылки предназначено для ввода имени переменной labVmId по умолчанию, если оно было изменено. По умолчанию установлено значение $(labVmId).

Сохранение конвейера выпуска

Для того чтобы сохранить новый конвейер выпуска:

  1. Выберите имя Новый конвейер выпуска в верхней части страницы конвейера выпуска и введите новое имя для конвейера.
  2. Выберите Сохранить в верхнем правом углу.

Создание и запуск выпуска

Чтобы создать и запустить выпуск с помощью нового конвейера:

  1. На странице конвейера выпуска вверху справа щелкните Создать выпуск;
  2. в разделе Артефакты выберите последнюю сборку и нажмите кнопку Создать.

На каждом этапе выпуска, можно обновлять вид тестовой службы на портале Azure. Таким образом, вы можете просматривать создание виртуальной машины, создание образа и удаление виртуальной машины.

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

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