понедельник, 3 октября 2022 г.

Настраиваем Ubuntu под VDI с помощью Ansible

Настройка Linux в качестве виртуального десктопа для VMware Horizon - не самая простая и быстрая задача. В свое время VMware даже опубликовала готовый виртуальны апплайнс на базе Ubuntu 18.04, который с помощью shell скрипта и черной магии позволял автоматизировать многие рутинные задачи для подготовки виртуального десктопа. Отдельно скрипт можно загрузить с репозитория на GitHub: https://github.com/thatvirtualboy/horizon-linux-vm

К сожалению, с тех пор данный проект не обновлялся, и для новых версий Ubuntu 20.04 и Ubuntu 22.04 без доработок он не подходит.

Поэтому я написал небольшой playbook для Ansible, чтобы автоматизировать настройку Ubuntu 18.04 / 20.04 / 22.04 под Horizon: https://github.com/omnimod/linux-optimize4vdi

Linux-optimize4vdi выполняет основные шаги по настройке гостевой ОС с Ubuntu, такие как обновление ОС, удаление/установка пакетов, установка параметров рабочего стола GNOME и т.д. Текущая версия поддерживает Ubuntu 22.04.

Автоматизация функций

Этот плейбук выполняет следующие оптимизации:
  1. Удаляет ненужные приложения из Ubuntu (игры, утилиты USB Creator и Transmission).
  2. Обновляет и апгрейдит пакеты с помощью apt update && apt upgrade.
  3. Обновляет установленные приложения с помощью snap refresh.
  4. Устанавливает последнюю версию Open-VM-Tools.
  5. Устанавливает новые приложения через apt (chromium, 7zip, vlc, telegram desktop client и zoom client).
  6. Отключает автоматические обновления и апдейты apt.
  7. Включает тихую загрузку GRUB.
  8. Отключает гибернацию и сон системы.
  9. Отключает ненужные службы (bluetooth, thunderbolt, служба обновления прошивок).
  10. Вводит компьютер в домен.
  11. Компилирует и устанавливает драйвер VHCI для перенаправления USB Horizon.
  12. Компилирует и устанавливает драйвер V4L2Loopback для Horizon RTAV.
  13. Устанавливает Horizon Agent с включенными функциями audio redirection, USB redirection и RTAV.
  14. Включает SSO для Horizon.
  15. Оптимизирует рабочий стол GNOME (отключает анимацию, устанавливает одноцветный фон рабочего стола).
  16. Очищает историю bash.
  17. Перезагружает виртуальный рабочий стол.

Как использовать

Установите гостевую ОС Ubuntu 18.04, 20.04 или 22.04 на виртуальную машину с настройками по умолчанию. При установке создайте учетную запись 'user'. Эта учетная запись будет использоваться для удаленного подключения от Ansible (если вы создали ее в момент установки системы, то ей автоматически будут выданы права sudoer для выполнения части оптимизаций в системе). Если вы используете другое имя пользователя, пожалуйста, измените шаги конфигурации и ansible.cfg соответствующим образом, и проверьте, что пользователь имеет права sudoer.

Установите сервер OpenSSH на виртуальный рабочий стол:
sudo apt get install openssh-server
Установите Ansible на отдельной рабочей станции / клиентском компьютере. При желании вы можете установить Ansible локально на сам виртуальный десктоп. В этом случае рекомендуется пропускать шаг перезагрузки десктопа после выполнения всех задач (см. раздел Тэги).

Для аутентификации и авторизации пользователя Ansible используются ssh ключи. Сгенерируйте ssh-ключ на вашей рабочей станции с настройками по умолчанию:
ssh-keygen
Скопируйте открытый ключ с рабочей станции на виртуальный рабочий стол:
ssh-copy-id -i ~/id_rsa.pub user@virtual_desktop_ip_address
При копировании потребуется однократно указать пароль учетной записи user, который вы задали при установке системы и создании учетной записи.

Измените файл inventory, в разделе [ubuntu] укажите IP-адрес виртуального рабочего стола, а также измените необходимые переменные. Значение переменных описано в файле inventory.

Скачайте и поместите необходимые установочные архивы с пакетами vhci, v4l2loopback и Horizon Agent в папку files.
Запустите плейбук Ansible с помощью команды:
ansible-playbook --ask-become-pass optimize.yml

Тэги

Если вы хотите запустить только определенную оптимизацию, вы можете запустить ansible-playbook с параметром --tags "tag1, tag2, tag3". В настоящее время этот плейбук поддерживает теги:
  • horizon - установить и настроить VMware Horizon Agent на виртуальном рабочем столе.
  • domain - присоединиться к домену с параметрами, указанными в файлах инвентаризации.
  • gnome - выполнить настройки и оптимизацию рабочего стола GNOME.
  • reboot - перезагрузить виртуальный рабочий стол после завершения оптимизации.
Например, чтобы запустить playbook только с оптимизацией горизонта и присоединения к домену, введите:
ansible-playbook --ask-become-pass --tags "horizon, domain" optimize.yml

Переменные

Файл inventory содержит следующие переменные, необходимых для работы плейбука:
  • horizon_agent - имя архива с дистрибутивом horizon_agent
  • vhci_driver - имя архива с драйвером vhci
  • v4l2loopback_driver - имя архива с драйвером v4l2loopback
  • domain_name - имя домена для подключения
  • domain_user - имя учетной записи для ввода в домен
  • domain_password - пароль учетной записи для ввода в домен
  • debug - установите в True для вывода расширенной информации от выполненных команд