Рекомендации по автоматизации платформы и DevOps для виртуального рабочего стола Azure

Виртуальный рабочий стол Azure — это управляемая служба, которая предоставляет плоскость управления Майкрософт для среды виртуализации виртуальных рабочих столов.

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

Рекомендации по проектированию

Ознакомьтесь со следующими рекомендациями при планировании и проектировании среды виртуального рабочего стола Azure.

Интеграция с DevOps

Автоматизация не обязательно означает интеграцию с DevOps, но интеграция предлагает множество преимуществ. Автоматизация процесса сборки для вашего золотого образа оправдывает инвестиции по нескольким причинам:

  • При использовании конвейера DevOps можно лучше управлять потоком автоматизации.
  • Отчеты и оповещения о развертываниях можно получать из конвейера DevOps.
  • Конвейер можно настроить для интеграции с платформами тестирования и создания шлюзов утверждения для этапов процесса автоматизации.
  • Вы можете запускать конвейеры в ответ на многие предварительно определенные события, такие как выпуск нового образа коллекции или приложения, или по заданному расписанию.
  • При автоматизации создания пула узлов можно легко переместить метаданные пула узлов в новые географические расположения, когда новые расположения становятся доступными.

Инфраструктура как код

При переходе к использованию методик DevOps необходимо выбрать инструмент для развертывания ресурсов Azure. Существуют две разные категории инструментов IaC. Предпочтительный вариант — это декларативное средство IaC.

Azure предоставляет собственные параметры с ARM шаблонами и Azure Bicep.

Вы также можете найти сторонние инструменты IaC, такие как Terraform от HashiCorp.

Совместное использование и личное использование

Так как ваша организация расширяет свою среду, большая часть рабочей нагрузки попадает под коллективную конфигурацию, а не личную конфигурацию.

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

Конфигурации с пулами являются наиболее популярными для виртуализации рабочих столов, поэтому они являются основной частью этой статьи. Объединённые среды должны обновляться по-другому, чем традиционные среды. Обновите виртуальные машины (ВМ) из эталонного образа с подходящей для вашей организации частотой (обычно каждые 1–3 месяца). Если ваша организация очень автоматизирована, вы можете увеличить периодичность до еженедельного или даже ночного при необходимости.

Создание образа.

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

Для масштабирования можно также использовать чек-лист сборки. Если у вас есть большая среда, процесс контрольного списка должен быть частью первоначальной настройки разработки и тестирования. Чем больше вы автоматизируете создание золотого образа, тем более уверенно вы можете быть в точности сборки и стабильности среды.

Мы не рекомендуем использовать существующий образ для создания виртуальной машины, обновляемой с помощью новых приложений и изменений конфигурации, а затем записывать для использования в качестве вашего "нового" эталонного образа. Поддержание этого сценария сопряжено с значительным риском и является основным фактором, из-за которого среды виртуализации рабочих столов становятся статичными и хрупкими.

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

Установка приложения

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

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

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

Развертывание на нескольких языках

Так как среды виртуального рабочего стола Azure начинают масштабироваться, возможно, потребуется локализовать образы на собственном языке для пользователей. Вы можете начать с локального языка, если вы предпочитаете, или добавить дополнительные языки в образ при сборке. Рассмотрите это требование при выборе базового образа. Предварительно оптимизированный образ коллекции Windows 10, например как с Microsoft 365, так и без нее, предоставляется только на английском США языке (en-US).

Примечание.

Если вы используете Windows 10 Enterprise для нескольких сеансов, вы не можете создать сборку на другом языке. В этом случае необходимо адаптировать предоставленное изображение из галереи. Чтобы адаптировать существующий образ из коллекции en-US, установите дополнительные языки перед установкой других приложений.

Расположения развертывания

Виртуальный рабочий стол Azure обеспечивает большую свободу в географическом размещении пулов узлов, чем традиционные классические среды. Такая свобода существует, так как все расположения Azure поддерживают Виртуальный рабочий стол Azure. Избегайте создания виртуальных машин из образа через широкополосную сеть (WAN), обеспечивая доступность эталонного образа в тех же местах, где находятся ваши пользователи.

Обновления золотого образа пула хостов

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

Метод один:

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

Два метода:

  • Задайте для существующих виртуальных машин режим очистки в пуле узлов.
  • Разверните новые виртуальные машины из обновленного эталонного образа в том же пуле узлов.
  • При удвоении числа виртуальных машин в одном пуле узлов важно следить за тем, чтобы не столкнуться с ограничениями ресурсов или лимитами API.

Рекомендации по проектированию

Ознакомьтесь со следующими рекомендациями при разработке среды виртуального рабочего стола Azure в организации.

Управление исходным кодом

Мы рекомендуем использовать Git для управления исходным кодом и поддержания простой стратегии ветвления. При использовании Git для вашей среды:

  • Сохраните репозиторий Git и проект Azure DevOps закрытыми, если ваша политика компании не указывает, что репозитории должны быть общедоступными.
  • Инициализировать репозиторий с помощью файла README, чтобы начать заполнение сведений о проекте.
  • Измените разрешения проекта, чтобы разрешить другим участникам команды доступ.
  • Используйте базовый процесс рабочего элемента для разработки конвейера и оптимизации рабочих нагрузок.
  • Как минимум, следует поддерживать два репозитория: один для управления сборками эталонных образов и другой для управления развертыванием виртуальных рабочих столов Azure.

Трубопроводы

Система развертывания конвейера определяется выбранной системой управления исходным кодом.

Если ваша организация стандартизировала использование Azure DevOps, используйте Azure Pipelines. Если ваша организация выбрала GitHub своим стандартом, используйте GitHub Actions. Любой из вариантов предоставляет возможность развертывания локального агента в сети, что имеет несколько преимуществ, в том числе:

  • Учёт более длительного времени сборки
  • Возможность доступа к ресурсам в сети

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

Переменные и Azure Key Vault

Используйте группы переменных при работе в Azure Pipelines.

  • Группы переменных позволяют иметь повторяемые параметры в конвейерах, таких как секреты и расположения файлов.
  • Переменные в группах переменных могут храниться в виде пар "ключ-значение", но рекомендуемый метод — это связывание группы переменных с Azure Key Vault, для извлечения секретов для использования в конвейере развертывания.

Создание образов виртуального рабочего стола Azure

Используйте службу Конструктор образов Azure (AIB), чтобы автоматизировать процессы сборки, обновления, подготовки sysprep и распространения для ваших эталонных образов. Эта служба может использовать поддерживаемый базовый образ из Microsoft Marketplace для каждой сборки, чтобы обеспечить наличие последних обновлений.

Примечание.

Построитель образов Azure в настоящее время доступен в выбранных регионах, но вы можете распространять образы за пределами этих регионов.

В рамках процесса сборки эталонного образа рассмотрите все приложения, которые необходимо установить, и определите, можно ли их установить с помощью скриптов. Убедитесь, что у вас есть сценарии установки приложений в PowerShell и зафиксированы в репозитории Git. Если вы не можете скачать установщики приложений через общедоступный Интернет, рассмотрите возможность размещения приложений в хранилище BLOB-объектов Azure. Если процессы установки приложений нуждаются в секретах, рассмотрите возможность размещения их в Azure Key Vault.

Чтобы начать работу с Azure Image Builder, см. статью Создание образа виртуального рабочего стола Azure с помощью Azure VM Image Builder и PowerShell

Чтобы запускать конструктор образов Azure посредством конвейеров CI/CD, используйте либо задачу Azure Image Builder Service DevOps для Azure Pipelines, либо действие создания образа виртуальной машины Azure для GitHub Actions.

HashiCorp Packer является альтернативой с открытым исходным кодом. Он предлагает те же возможности, что и Azure Image Builder (Построитель образов Azure), который построен на основе HashiCorp Packer, с возможностью размещать в Галерее вычислений Azure.

Дополнительные сведения о Packer см.: на веб-сайте Packer.

Метод Packer имеет следующие предварительные требования:

  • Лицензирование Azure DevOps должно использовать полный набор средств Packer.
  • Необходимо назначить пользователю соответствующую роль в идентификаторе Microsoft Entra.
  • Роль участника необходимо назначить служебному принципалу в рамках подписки.
  • Для хранения секретов в Azure Key Vault необходимо предоставить управление секретами субъекта-службы в политике доступа.

При работе с Packer в конвейере развертывания:

  • Установите средства Packer в агенте сборки, который будет использоваться в конвейере развертывания.
  • Создайте этап проверки в конвейере, чтобы проверить, работает ли сборка.
  • После проверки клонируйте этап проверки и установите режим развертывания на инкрементный.

Другие рекомендации по хранилищу файлов Packer:

  • Храните ваши файлы Packer и ресурсы в централизованном расположении, к которому может получить доступ Azure Pipelines. Мы рекомендуем использовать файловые ресурсы Azure для безопасного хранения этих файлов.
  • Сохраните данные учётной записи для Azure Files в Key Vault. Вы можете извлечь учетные данные доступа из Key Vault при сборке с помощью переменных конвейера.
  • Кроме того, сохраните имя файла Packer и ключ учетной записи в хранилище ключей, связанное с группой переменных в Azure DevOps. Проводники получают доступ к этим учетным данным для скачивания файлов Packer на виртуальную машину, которая используется для создания образа.
  • Сохраните UNC-путь в качестве переменной в группе переменных Azure DevOps.

Хранение образов виртуальных рабочих столов Azure

Служба Azure Compute Gallery — это самый простой способ структурировать и упорядочивать ваши эталонные образы. Предоставляет:

  • Глобальная репликация образов в разные регионы Azure.
    • Убедитесь, что вы развернули образы в тех регионах, в которых развертываются сеансовые узлы (виртуальные машины) виртуального рабочего стола Azure.
  • Версионирование и группировка изображений для облегчённого управления. Управление версиями и группирование полезны для отката пулов узлов Виртуального рабочего стола Azure к предыдущим версиям образа.
  • Высокодоступные образы с учетными записями хранилища с избыточностью между зонами (ZRS) в регионах, где поддерживаются Зоны доступности. ZRS повышает устойчивость путем распределения реплик по зонам.
  • Обмен образами Виртуального рабочего стола Azure как между подписками, так и между клиентами Microsoft Entra с использованием управления доступом на основе ролей (RBAC).
  • Масштабирование развертывания с помощью реплик образов в каждом регионе.
    • Запланируйте развертывание по одной реплике на каждые 20 виртуальных машин, которые планируется развернуть одновременно.

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

Установка приложения в образах Виртуального рабочего стола Azure

  • Для универсальных приложений, установленных в эталонном образе, используйте метод Packer, как описано ранее в статье.
  • Подключение приложений — это поддерживаемый метод динамической доставки приложений пользователям в Виртуальном рабочем столе Azure. Подключение приложений позволяет приложениям быть контейнеризованными или представленными через виртуальный диск и подключаться при входе пользователя, уменьшая размер и сложность базового образа. Этот подход повышает гибкость, упрощает обновления и поддерживает современные методики DevOps.
  • Используйте конвейеры CI/CD для автоматизации процесса упаковки и доставки приложений, связанных с функционалом App Attach. Рекомендации по упаковке см. в обзоре CI/CD для упаковки приложений.

Развертывание языков в образах виртуального рабочего стола Azure

Корпорация Майкрософт применяет процессы для установки языковых пакетов вручную или автоматически. Рекомендуется как можно меньше расходов на администрирование и автоматизацию процесса установки языка.

Процесс включает загрузку скрипта PowerShell на виртуальную машину, которая будет преобразована в образ. Примеры сценариев автоматизации можно найти в документации Майкрософт. Если вы соблюдаете рекомендации по конвейерам Packer, вы можете включить этот процесс в качестве дополнительного этапа сборки.

Дополнительные сведения об установке языковых пакетов в Windows 10 Enterprise Multi-Session см. в статье Установка языковых пакетов на виртуальных машинах Azure с Windows 10.

Используйте подход инфраструктуры как кода (IaC) к развертыванию и настройке ресурсов виртуального рабочего стола Azure. Их следует применять везде, где это возможно, чтобы обеспечить согласованность развертывания. Шаблоны ARM можно использовать для развертывания ресурсов виртуального рабочего стола Azure в рамках задачи конвейера CI/CD. Их также можно применять при использовании портала Azure, Azure PowerShell или Azure CLI.

Ниже приведена рекомендуемая стратегия обновления пула хостов:

  • Настройте конвейер CI/CD для создания и распространения золотых образов в Галерее Azure Compute.
  • Назначьте пул узлов проверки и разверните новые узлы сеансов в пуле узлов проверки с помощью конвейеров CI/CD.
  • Протестируйте автоматизацию с помощью пула узлов проверки.
  • Пометьте хосты сеансов номером сборки или версией образа, чтобы определить версию образа, на котором они работают.
  • Перед развертыванием проверьте, чтобы убедиться, что в вашей подписке достаточно квоты вычислительных ресурсов.
  • После успешного тестирования в пуле проверки поместите существующие узлы сеансов в режим очистки. Помеченные виртуальные машины будут легко идентифицировать.
  • Разверните новые узлы сеансов и разрешите пользователям подключаться.
  • После успешного тестирования в производственной среде начните удалять старые узлы сеансов, чтобы больше не нести затраты на вычислительные ресурсы, и в конечном итоге удалите их, чтобы избежать дальнейших расходов на управляемые диски.
  • Удаленные узлы сеансов будут удалены только из Azure. Объекты компьютеров останутся в AD, поэтому эти объекты компьютера должны быть удалены вручную или с помощью скрипта.

В приведенном выше примере показан один из методов автоматизации образа с помощью Azure DevOps и потока непрерывной интеграции и непрерывной доставки (CI/CD). Это облачный нативный подход и обеспечивает развертывание новых узлов сеансов без простоя и с минимальными нарушениями. Важно отметить, что следует учитывать всплеск количества виртуальных машин при поэтапном удалении старых образов и переносе новых образов в Интернет.

Как упоминалось выше, Azure Compute Gallery — это служба, которая помогает создавать структуру и организацию вокруг образами. На эти образы можно ссылаться в развертываниях IaC узлов сеансов Виртуального рабочего стола Azure. Служба поддерживает управление версиями, группирование и репликацию образов.

При развертывании узлов сеансов с помощью шаблона ARM или Terraform рекомендуется использовать идентификатор ресурса образа, созданного в вашей коллекции, в качестве идентификатора пользовательского образа виртуальной машины. Образ, который вы используете, должен быть реплицирован через Галерею вычислительных ресурсов Azure в регионы Azure, где развертываются пулы узлов хоста Виртуального рабочего стола Azure.

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

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