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
Настройка
Подключение системы виртуализации
В разделе «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» и «Machine»): название службы, хранилище, базовый шаблон (шаблон ВМ, используемый системой OpenUDS для развертывания виртуальных рабочих столов), базовое название для клонов с этой машины (например, Desk-kwork-), количество цифр счетчика, прикрепленного к базовому имени рабочих столов (например, если Name Length = 3, названия сгенерированных рабочих столов будет: Desk-kwork-000, Desk-kwork-001 ... Desk-kwork-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, получать доступ к виртуальным рабочим столам и приложениям.
Параметры конфигурации:
- вкладка «Main»: название аутентификатора, приоритет, метка, IP-адрес и порт сервера LDAP, тайм-аут;
- вкладка «Credentials»: имя пользователя с правами чтения на сервере (формат uid=...,ou=....,dc=...,dc=...), пароль;
- вкладка «Ldap info»: база — каталог поиска, класс пользователя.
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»
Подготовка шаблона виртуальной машины
Требования к шаблону виртуальной машины:
- установить openuds-actor:
# apt-get install openuds-actor
- в настройках openuds-actor (/etc/udsactor/udsactor.cfg) указать IP-адрес сервера UDS и Master Key, соответствующий серверу OpenUDS:
[uds] host = 192.168.0.191 logLevel = 30000 ssl = False masterKey = b578d41ac4c6513bbda188cdd57f3e20
Подключение пользователя к виртуальному рабочему месту
- на клиенте необходимо установить openuds-client
# apt-get install openuds-client
- подключиться к серверу OpenUDS с помощью браузера http://<openuds_address>, имя/пароль должен указать администратор, возможен как из внутренней базы OpenUDS, так и из внешней, например ldap
- в web-интерфейсе пользователя видны виртуальные машины(или шаблоны) только опубликованные администратором
- выбрав нужную ВМ, автоматически загрузится opennebula-client и запустит приложение для просмотра удаленного рабочего стола