VDI/OpenUDS
Введение
OpenUDS это много-платформенный брокер подключений для создания и управления виртуальными рабочими местами и приложениями. Основные компоненты решения VDI на базе OpenUDS:
- OpenUDS Server (openuds-server) - брокер подключений пользователей, а так же интерфейс администратора для настройки.
- SQL Server. Для работы django приложения, которым является openuds-server необходим SQL сервер, например mysql или mariadb. Может быть установлен на отдельном сервере.
- Платформа для запуска клиентских окружений и приложений. OpenUDS совместима со множеством систем виртуализации: PVE, OpenNebula, oVirt, OpenStack. Так же возможно использование с отдельным сервером без виртуализации (аналог терминального решения).
- OpenUDS Client (openuds-client) - клиентское приложения для подключения к брокеру соединений и дальнейшего получения доступа к виртуальному рабочему окружению
- OpenUDS Tunnel (openuds-tunnel) - решение для туннелирования обращений от клиента к виртуальному рабочему окружению. Предназначено для предоставления доступа из недоверенных сегментов сети, например из Интернет. Устанавливается на отдельный сервер.
- OpenUDS Actor (openuds-actor) - ПО для гостевых виртуальных машин, реализует связку виртуальной машины и брокера соединений.
Установка
Установка mysql/mariadb
# apt-get install mariadb # systemctl enable --now mariadb.service # mysql_secure_installation # mysql -u root
mysql> CREATE DATABASE dbuds CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'dbuds'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON dbuds.* TO 'dbuds'@'%';
mysql> FLUSH PRIVILEGES;
OpenUDS Server
Установка OpenUDS Server
# apt-get install openuds-server-nginx
Будут установлены:
- openuds-server — django приложение;
- gunicorn — сервер приложений. Обеспечивает запуск django как стандартного WSGI приложения;
- nginx — http-сервер, используется в качестве reverse-proxy для доступа к django приложению, запущенному с помощью gunicorn.
Настройка OpenUDS Server
- отредактировать /etc/openuds/settings.py, указав корректные данные для подключения к SQL серверу:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'isolation_level': 'read committed', }, 'NAME': 'dbuds', # Or path to database file if using sqlite3. 'USER': 'dbuds', # Not used with sqlite3. 'PASSWORD': 'password', # Not used with sqlite3. 'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '3306', # Set to empty string for default. Not used with sqlite3. } }
- "заполнить" базу данных первоначальными данными:
# su -s /bin/bash - openuds $ cd /usr/share/openuds $ python3 manage.py migrate
- запустить gunicorn:
# systemctl enable --now openuds-web.service
- запустить nginx:
# ln -s ../sites-available.d/openuds.conf /etc/nginx/sites-enabled.d/openuds.conf # systemctl enable --now nginx.service
- запустить менеджер задач OpenUDS
# systemctl enable --now openuds-taskmanager.service
- подключиться к серверу OpenUDS с помощью браузера http://<openuds_address>
Чтобы получить доступ к администрированию OpenUDS следует в меню пользователя выбрать пункт «Dashboard»:
Дополнительная информация о настройках django приложений:
https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/ https://docs.djangoproject.com/en/2.2/ref/databases/
OpenUDS Tunneler
Установка OpenUDS Tunnel
Установка OpenUDS Tunnel должна выполняться на отдельной от OpenUDS Server системе.
# apt-get install openuds-tunnel
Будут установлены:
- openuds-tunnel — java приложение, основанное на проекте guacamole;
- guacamole-server
- tomcat
- libnss_uds
- pam_uds
Настройка OpenUDS Tunnel
- указать адрес OpenUDS сервера (брокера) в /etc/uds.conf и в /etc/pam.d/sshd_uds;
- запустить сервисы:
# systemctl enable --now sshd_uds guacd tomcat
Обновление
При обновлении для применения новой конфигурации необходимо скопировать новый файл конфигурации пакета:
/bin/cp -f /etc/openuds/settings.py{.rpmnew,}
Поправьте пароль к базе данных в поле 'PASSWORD'.
Перезапустите компьютер, так как при обновлении не создаётся файл /run/openuds/socket.
Настройка
Подключение системы виртуализации
В разделе «Services» подключаем один из «Service providers»:
- PVE Platform Provider
- OpenNebula Platform Provider
- OpenStack Platform Provider
- oVirt/RHEV Platform Provider
- Static IP Machine Provider (отдельный сервер без виртуализации)
OpenNebula
Минимальные параметры для настройки «OpenNebula Platform Provider»: название, IP-адрес сервера OpenNebula (поле «Host»), порт подключения, имя пользователя (с правами администратора) и пароль. Используя кнопку «Тест», можно убедиться, что соединение установлено правильно.
После интеграции платформы OpenNebula в OpenUDS необходимо создать базовую службу типа «OpenNebula Live Images». Для этого дважды щелкните мышью по строке созданного поставщика услуг или в контекстном меню поставщика выберите «Detail»:
На вкладке «Services» нажмите «New»→«OpenNebula Live Images».
Заполните параметры конфигурации. Вкладка «Main»:
- «Name» — название службы;
- «Datastore» — хранилище.
Вкладка «Machine»:
- «Base Template» — шаблон ВМ, используемый системой OpenUDS для развертывания виртуальных рабочих столов (см. VDI/OpenUDS#Подготовка_шаблона_виртуальной_машины);
- «Machine Names» — базовое название для клонов с этой машины (например, Desk-kwork-);
- «Name Length» — количество цифр счетчика, прикрепленного к базовому имени рабочих столов (например, если Name Length = 3, названия сгенерированных рабочих столов будут: Desk-kwork-000, Desk-kwork-001 ... Desk-kwork-999).
PVE
Минимальные параметры для настройки «Proxmox Platform Provider»: название, IP-адрес/имя сервера или кластера (поле «Host»), порт подключения, имя пользователя с достаточными привилегиями в PVE (в формате пользователь@аутентификатор) и пароль.
Используя кнопку «test», можно убедиться, что соединение установлено правильно.
После интеграции платформы PVE в OpenUDS необходимо создать базовую службу типа «Proxmox Linked Clone». Для этого дважды щелкните мышью по строке созданного поставщика услуг или в контекстном меню поставщика выберите «Detail»:
На вкладке «Services» нажмите «New»→«Proxmox Linked Clone»:
Заполните параметры конфигурации. Вкладка «Main»:
- «Name» — название службы;
- «Pool» — пул, в котором будут находиться ВМ, созданные OpenUDS;
- «HA» — включать ли созданные ВМ в группу HA PVE.
Вкладка «Machine»:
- «Base Machine» — шаблон ВМ, используемый системой OpenUDS для развертывания виртуальных рабочих столов (см. VDI/OpenUDS#Подготовка_шаблона_виртуальной_машины);
- «Storage» — хранилище, где будут храниться сгенерированные виртуальные рабочие столы (поддерживаются хранилища, позволяющие создавать «Снимки»);
- «Machine Names» — базовое название для клонов с этой машины (например, Desk-SL-);
- «Name Length» — количество цифр счетчика, прикрепленного к базовому имени рабочих столов (например, если Name Length = 3, названия сгенерированных рабочих столов будут: Desk-SL-000, Desk-SL-001 ... Desk-SL-999).
Настройка аутентификации пользователей
В разделе «Autentificators» выбираем тип аутентификации пользователей. Можно выбрать как внешние источники (Active Directory, OpenLDAP и т. д.), так и внутренние (внутренняя база данных, IP-аутентификация):
- Internal Database
- Regex LDAP Authenticator
- IP Autentificator
Внутренняя база данных
При этом типе аутентификации данные пользователей и групп хранятся в базе данных, к которой подключен сервер OpenUDS.
Минимальные параметры конфигурации (вкладка «Main»): имя аутентификатора, приоритет и метка.
После того, как аутентификатор типа «Internal Database» создан, нужно будет зарегистрировать пользователей и группы пользователей. Для этого следует выбрать аутентификатор «Internal Database», во вкладке «Groups» создать группу пользователей, затем во вкладке «Users» создать пользователей.
Regex LDAP Authenticator
Этот аутентификатор позволяет пользователям и группам пользователей, принадлежащих практически любому аутентификатору на основе LDAP, получать доступ к виртуальным рабочим столам и приложениям.
FreeIPA
1. В разделе Authenticators нажмите кнопку New и выберите «Regex LDAP Authenticator».
2. Заполните поля первых трёх вкладок. Для этого вам нужно добавить пользователя в LDAP, имеющего права на чтение каталога и знать домен. В примере указан домен freeipa.test.
3. Помимо указания источника пользователей необходимо добавить существующую группу LDAP, в которую они входят. Дважды щёлкните на созданном соединении, перейдите на вкладку Groups, нажмите кнопку New и выберите пункт Group.
4. Заполните dn существующей группы (для FreeIPA по умолчанию это группа cn=ipausers,cn=groups,cn=accounts,dc=freeipa,dc=test и укажите разрешённые пулы.
Active Directory
Настройка аутентификации в Active Directory (например, на samba-dc) аналогична FreeIPA кроме следующих различий (на примере домена company.localnet):
1. Имя пользователя можно указать в виде имя@домен:
2. Различаются поля LDAP:
3. В качестве группы, например, может быть указана CN=Users,CN=Builtin,DC=company,DC=localnet.
IP-аутентификаци
Этот тип аутентификации обеспечивает доступ клиентов к рабочим столам и виртуальным приложениям по их IP-адресу.
Минимальные параметры конфигурации (вкладка «Main»): имя аутентификатора, приоритет и метка.
После того, как аутентификатор типа «IP Autentificator» создан, следует создать группы пользователей. Группа может представлять собой диапазон IP-адресов (192.168.0.1-192.168.0.55), подсеть (192.168.0.0/24) или отдельные IP-адреса (192.168.0.33,192.168.0.50)
Настройка групп пользователей
На вкладке "Groups" необходимо создать группы пользователей с указанием какую базу пользователей использовать.
Настройка «OS Manager»
«Linux OS Manager» используется для виртуальных рабочих столов на базе Linux. Он выполняет задачи переименования и управления сеансами виртуальных рабочих столов.
«Windows Basic OS Manager» используется для виртуальных рабочих столов на базе Windows, которые не являются частью домена AD.
Минимальные настройки для «Linux OS Manager» и «Windows Basic OS Manager»:
- «Name» — название;
- «Logout Action» — действие, которое OpenUDS будет выполнять на виртуальном рабочем столе при закрытии сеанса пользователя («Keep service assigned» = постоянная ВМ, при выходе пользователя, система не предпринимает никаких действий, при повторном входе пользователю будет назначен тот же рабочий стол. «Remove service» = непостоянная ВМ, при выходе пользователя из системы, система уничтожит рабочий стол. «Keep service assigned even on new publication» — сохранение назначенной службы даже при создании новой публикации «Service Pool»);
- «Max. Idle time» («Время простоя») — время (в секундах) простоя виртуального рабочего стола. По истечении этого времени OpenUDS Actor автоматически закроет сеанс. Отрицательные значения и значения менее 300 секунд отключают эту опцию.
Настройка «Transports»
Для подключения к виртуальным рабочим столам необходимо создать «Transports». Это приложения, которые будут выполняться на клиенте и будут отвечать за предоставление доступа к реализованной службе.
Можно создать один транспорт для различных «пулов» или установить по одному для каждого «пула».
При создании «Transports» необходимо выбрать его тип: «Direct» — используется, если пользователь имеет доступ к виртуальным рабочим столам из внутренней сети (например, LAN, VPN и т. д.); «Tunneled» — используется, если у пользователя нет прямого подключения к рабочему столу.
RDP (direct)
«RDP» позволяет пользователям получать доступ к виртуальным рабочим столам Windows/Linux. И на клиентах подключения, и на виртуальных рабочих столах должен быть установлен и включен протокол RDP (для виртуальных рабочих столов Linux необходимо использовать XRDP).
SPICE (direct)
«SPICE» позволяет пользователям получать доступ к виртуальным рабочим столам Windows/Linux. На клиентах подключения должен быть установлен клиент «SPICE» (Virt-Manager). Транспортный протокол «SPICE» может использоваться только с oVirt/RHEV и OpenNebula.
X2Go (direct)
«X2Go» позволяет пользователям получать доступ к виртуальным рабочим столам Linux. И на клиентах подключения (клиент), и на виртуальных рабочих столах (сервере) должен быть установлен и включен «X2Go».
Настройка «Service Pools»
После того, как был создан и настроен хотя бы один Service provider (с базой службы), аутентификатор (с пользователем и группой), «Manager OS» и «транспорт», нужно создать Service Pool для публикации виртуальных рабочих столов.
Вкладка «Main»:
- «Name» — название службы;
- «Base service» — служба, созданная ранее в «Поставщике услуг»;
- «OS Manager».
Вкладка «Display»:
- «Visible» — если этот параметр отключен, пул не будет отображаться у пользователей;
- «Associated Image» — Изображение, связанное с услугой. Изображение должно быть предварительно добавлено в репозиторий изображений (раздел «Tools»→«Gallery»);
- «Pool group» — позволяет группировать различные службы. Группа должна быть предварительно создана в разделе «Pools»→«Groups».
Вкладка «Availability»:
- «Initial available services» — минимальное количество виртуальных рабочих столов, созданных, настроенных и назначенных/доступных для службы;
- «Services to keep in cache» — количество доступных виртуальных рабочих мест. Они всегда будут настроены и готовы к назначению пользователю (они будут автоматически создаваться до тех пор, пока не будет достигнуто максимальное количество машин, указанное в поле «Maximum number of services to provide»);
- «Maximum number of services to provide» — максимальное количество виртуальных рабочих столов, созданных системой в «пуле служб» (рабочие столы, созданные в кэше L2, не учитываются).
Нажать кнопку «Save» и система начнет создавать виртуальные рабочие столы на основе настроенного кеша (вкладка «Availability»).
После создания пула, в настройках:
- на вкладке «Groups» назначить группы доступа (выбрать аутентификатор и группу, которая будет иметь доступ к этому пулу служб):
- на вкладке «Transports» выбрать способы подключения пользователей к рабочему столу:
Подготовка шаблона виртуальной машины
Требования к шаблону виртуальной машины:
- Установить openuds-actor:
# apt-get install openuds-actor
- Включить автозапуск сервиса udsactor.service:
# systemctl enable udsactor.service
- Зарегистрировать UDS Actor на сервере UDS:
- запустить UDS Actor из меню («Настройки»→«UDS Actor Configuration») или командой:
$ /usr/sbin/UDSActorConfig-pkexec
- Потребуется ввести пароль пользователя, входящего в группу wheel.
- на вкладке «UDS Server» необходимо указать имя или IP-адрес сервера UDS, имя и пароль пользователя, имеющего права администратора в среде UDS и нажать кнопку «Register with UDS» («Зарегистрироваться в UDS»).
- Установить и настроить один из вариантов удаленного доступа:
Подключение пользователя к виртуальному рабочему месту
- на клиенте необходимо установить openuds-client
# apt-get install openuds-client
- подключиться к серверу OpenUDS с помощью браузера http://<openuds_address>, имя/пароль должен указать администратор, возможен как из внутренней базы OpenUDS, так и из внешней, например ldap
- в web-интерфейсе пользователя видны виртуальные машины (или шаблоны) только опубликованные администратором:
- выбрав нужную ВМ, автоматически загрузится openuds-client и запустит приложение для просмотра удаленного рабочего стола