Поделиться через


Запуск фабрики образов из Azure DevOps

В данной статье рассматриваются все подготовительные действия, необходимые для запуска фабрики образов из Azure DevOps (ранее Visual Studio Team Services).

Примечание.

Любая подсистема оркестрации будет работать! Применение Azure DevOps не является обязательным. Фабрика образов запускается с помощью скриптов Azure PowerShell, поэтому ее можно запустить и вручную, используя Планировщик задач Windows, другие системы CI/CD и т. д.

Создание лаборатории для фабрики образов

Первым шагом в настройке фабрики образов является создание лаборатории в Azure DevTest Labs. Эта лаборатория станет лабораторией фабрики образов, в которой мы создадим виртуальные машины и будем сохранять пользовательские образы. Такая лаборатория будет рассматриваться как часть процесса фабрики образов. После создания лаборатории обязательно сохраните имя, так как оно понадобится позже.

Скрипты и шаблоны

Следующий шаг во внедрении фабрики образов для вашей команды — понять, какие инструменты у вас имеются. Скрипты и шаблоны фабрики образов находятся в репозитории DevTest Labs GitHub Repo. Ниже представлены составные части структуры.

  • Фабрика образов. Это корневой каталог.
    • Конфигурация. Входные данные в фабрике образов
      • GoldenImages. Эта папка содержит файлы JSON, которые представляют определения пользовательских образов.
      • Labs.json. Файл, где проектные команды делают подписку на получение определенных пользовательских образов.
  • Скрипты. Подсистема для фабрики образов.

В статьях данного раздела будут представлены дополнительные сведения об этих скриптах и шаблонах.

Создание командного проекта Azure DevOps

Azure DevOps позволяет хранить исходный код, запускать Azure PowerShell в одном месте. Для обновления образов можно запланировать повтор запусков. Имеются удобные средства для внесения результатов в журнал с целью диагностики проблем. Использование Azure DevOps не является требованием, однако вы можете использовать любое программное средство/обработчик, которые могут подключаться к Azure и запускать Azure PowerShell.

Если у вас уже есть учетная запись DevOps или проект, которые вы хотите использовать, то пропустите этот шаг.

Чтобы приступить к работе, создайте бесплатную учетную запись в Azure DevOps. Посетите страницу https://www.visualstudio.com/ и выберитеПриступить к работе, без оплаты прямо под заголовком Azure DevOps (ранее — VSTS). Необходимо выбрать уникальное имя учетной записи, а затем выбрать управление кодом с помощью Git. После создания учетной записи сохраните URL-адрес в командном проекте. Ниже приведен пример URL-адреса: https://<accountname>.visualstudio.com/MyFirstProject.

Регистрация фабрики образов в Git

И PowerShell, и шаблоны, и конфигурация для фабрики образов находятся в общедоступном репозитории public DevTest Labs GitHub repo. Самый быстрый способ получить код для нового командного проекта — импортировать репозиторий. При этом извлекается весь репозиторий DevTest Labs (таким образом вы получите дополнительные документы и примеры).

  1. Посетите проект Azure DevOps, созданный на предыдущем шаге (URL-адрес выглядит так: https://<имя_учетной_записи>.visualstudio.com/MyFirstProject).

  2. Выберите Импорт репозитория.

  3. Введите URL-адрес клона для репозитория DevTest Labs: https://github.com/Azure/azure-devtestlab.

  4. Выберите Импорт.

    Screenshot that shows Import Git repo.

Если вы решили зарегистрировать только то, что вам точно нужно (файлы фабрики образов), выполните действия, описанные здесь, чтобы клонировать репозиторий Git и отправить только те файлы, которые расположены в каталоге scripts/ImageFactory.

Создание сборки и подключение к Azure

На этом этапе у вас есть исходные файлы, хранящиеся в репозитории Git в Azure DevOps. Теперь необходимо настроить процесс запуска Azure PowerShell. Существует множество вариантов выполнения этих действий. В этой статье определение сборки используется для упрощения, но оно относится и к сборке DevOps, и к выпуску DevOps (одиночная или множественная среда), и к другими механизмам выполнения, таким как Планировщик задач Windows или любая другая программа, которая может выполнять Azure PowerShell.

Примечание.

Важно помнить, что некоторые файлы PowerShell требуют очень много времени для своей работы, когда создается большое число (10+) пользовательских образов. У бесплатных агентов сборки/выпуска DevOps время ожидания составляет 30 минут, поэтому, когда вам будет необходимо создавать множество образов, вы не сможете использовать бесплатный агент. Подобная проблема со временем ожидания относится к любому используемому программному средству, поэтому лучше проверить, можно ли продлить типовое время ожидания для долго выполняющихся скриптов Azure PowerShell. В случае с Azure DevOps можно либо использовать платные размещенные агенты, либо использовать собственный агент сборки.

  1. Для начала выберите Настроить сборку на домашней странице своего проекта DevOps:

    Screenshot that shows Set up Build button.

  2. Укажите имя для сборки (например: Создать и доставить образы в DevTest Labs).

  3. Выберите пустое определение сборки и нажмите кнопку Применить, чтобы создать сборку.

  4. На этом этапе для агента сборки можно выбрать Размещен.

  5. Сохранить определение сборки.

    Screenshot that shows Build definition.

Настройка переменных сборки

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

Имя переменной Значение Примечания.
ConfigurationLocation /Scripts/ImageFactory/Configuration Это полный путь в репозитории к папке Конфигурация. Если вы импортировали весь репозиторий, указанный выше, значение слева будет правильным. В противном случае обновите его, чтобы указать расположение конфигурации.
DevTestLabName MyImageFactory Имя лаборатории в Azure DevTest Labs используемой в качестве фабрики для создания образов. Если его у вас нет, создайте его. Проверьте, чтобы лаборатория находилась в той же подписке, к которой имеет доступ конечная точка службы.
ImageRetention 1 Количество образов, которые необходимо сохранить для каждого типа. Установите значение по умолчанию на 1.
MachinePassword ******* Встроенный пароль учетной записи администратора для виртуальных машин. Это временная учетная запись, поэтому следует убедиться, что она безопасна. Щелкните маленький значок замка справа, чтобы убедиться, что это безопасная строка.
MachineUserName ImageFactoryUser Встроенное имя пользователя в учетной записи администратора для виртуальных машин. Это временная учетная запись.
StandardTimeoutMinutes 30 Время ожидания, которое нам следует выдерживать при обычных операциях в Azure.
SubscriptionId 0000000000-0000-0000-0000-0000000000000 Идентификатор подписки, в которой существует лаборатория и доступ к которой имеет конечная точка службы.
VMSize Standard_A3 Размер виртуальной машины, используемой на шаге Создание. Созданные виртуальные машины являются временными. Размер должен быть активирован для данной лабораторииenabled for the lab. Получите подтверждение, что квоты на количество основных подписок subscription cores quota достаточно.

Screenshot that shows Build variables.

Подключение к Azure

Следующим шагом является настройка субъекта-службы. Субъект-служба — это удостоверение в идентификаторе Microsoft Entra, которое позволяет агенту сборки DevOps работать в Azure от имени пользователя. Чтобы настроить его, начните с добавления первого этапа сборки Azure PowerShell.

  1. Выберите Добавить задачу.
  2. Выполните поиск Azure PowerShell.
  3. После того как вы его найдете, нажмите кнопку Добавить, чтобы добавить в сборку задачу. Выбрав Добавить, вы увидите, что задача отображается с левой стороны как добавленная.

Screenshot that shows Set up PowerShell step.

Самый быстрый способ настроить субъект-службу — позволить Azure DevOps сделать это за нас.

  1. Выберите только что добавленную задачу.
  2. В поле Тип подключения Azure выберите Azure Resource Manager.
  3. Щелкните ссылку Управление, чтобы настроить субъект-службу.

Дополнительные сведения см. в этой записи блога. Выбрав ссылку Управление, вы окажетесь в нужном месте в DevOps (второй снимок экрана в записи блога) для настройки подключения к Azure. При настройке подключения обязательно выберите конечную точку службы Azure Resource Manager.

Завершение задачи сборки

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

  1. В первую очередь назовите задачу сборки: Создание виртуальных машин.

  2. Выберите субъект-службу, которую вы создали, щелкнув на Azure Resource Manager

  3. Выберите Конечная точка службы.

  4. Как Путь к скриптувыберите ... (многоточие) справа.

  5. Перейдите к скрипту MakeGoldenImageVMs.ps1.

  6. Параметры скрипта должны выглядеть следующим образом: -ConfigurationLocation $(System.DefaultWorkingDirectory)$(ConfigurationLocation) -DevTestLabName $(DevTestLabName) -vmSize $(VMSize) -machineUserName $(MachineUserName) -machinePassword (ConvertTo-SecureString -string '$(MachinePassword)' -AsPlainText -Force) -StandardTimeoutMinutes $(StandardTimeoutMinutes)

    Screenshot that shows Complete the build definition.

Постановка сборки в очередь

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

VMs in the lab

Следующие шаги

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