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

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

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

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

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

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

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

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

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

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

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

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

Конфигурации в составе пула и личные конфигурации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

Метод один:

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

Два метода:

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

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

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

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

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

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

Pipelines

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительные сведения см. в обзоре службы коллекции вычислений Azure.

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

  • Для универсальных приложений, установленных на золотом изображении, используйте метод Packer, описанный ранее в этой статье.
  • В настоящее время App-V является поддерживаемым методом корпорации Майкрософт для потоковой передачи приложений на каждого пользователя.
  • Используйте маскирование приложений FSLogix, чтобы скрыть или показать приложения или подключаемые модули, если эти приложения не работают с App-V.
  • Используйте подключение приложения MSIX, где это возможно, для динамической доставки приложений пользователям и уменьшения общего размера образа золота. Конвейеры CI/CD также можно использовать для автоматизации процесса упаковки приложений в формате MSIX. Дополнительные сведения см. в обзоре.

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

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

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

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

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

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

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

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

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

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

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

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