VDI/OpenUDS

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Введение

OpenUDS это много-платформенный брокер подключений для создания и управления виртуальными рабочими местами и приложениями. Основные компоненты решения VDI на базе OpenUDS:

  1. OpenUDS Server (openuds-server) - брокер подключений пользователей, а так же интерфейс администратора для настройки.
  2. SQL Server. Для работы django приложения, которым является openuds-server необходим SQL сервер, например mysql или mariadb. Может быть установлен на отдельном сервере.
  3. Платформа для запуска клиентских окружений и приложений. OpenUDS совместима со множеством систем виртуализации: PVE, OpenNebula, oVirt, OpenStack. Так же возможно использование с отдельным сервером без виртуализации (аналог терминального решения).
  4. OpenUDS Client (openuds-client) - клиентское приложения для подключения к брокеру соединений и дальнейшего получения доступа к виртуальному рабочему окружению
  5. OpenUDS Tunnel (openuds-tunnel) - решение для туннелирования обращений от клиента к виртуальному рабочему окружению. Предназначено для предоставления доступа из недоверенных сегментов сети, например из Интернет. Устанавливается на отдельный сервер.
  6. 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>
Примечание: Имя/пароль по умолчанию: root/udsmam0


Дополнительная информация о настройках 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 (отдельный сервер без виртуализации)


OpenUDS. Подключение системы виртуализации

Настройка аутентификации пользователей

В разделе «Autentificators» выбираем тип аутентификации пользователей. Можно выбрать как внешние источники (Active Directory, OpenLDAP и т. д.), так и внутренние (внутренняя база данных, IP-аутентификация):

  • Internal Database
  • Regex LDAP Authenticator
  • IP Autentificator

OpenUDS. Выбор типа аутентификации пользователей

Настройка групп пользователей

На вкладке "Groups" необходимо создать группы пользователей с указанием какую базу пользователей использовать.

Настройка «OS Manager»

OpenUDS. Настройка «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
Примечание: Получить UDS Master Key можно в панели администрирование UDS (раздел «Tools»→«Configuration», вкладка «Security», поле «Master Key»):

OpenUDS. Master Key

  • установить и настроить один из вариантов удаленного доступа:

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

  • на клиенте необходимо установить openuds-client
# apt-get install openuds-client
  • подключиться к серверу OpenUDS с помощью браузера http://<openuds_address>, имя/пароль должен указать администратор, возможен как из внутренней базы OpenUDS, так и из внешней, например ldap
  • в web-интерфейсе пользователя видны виртуальные машины(или шаблоны) только опубликованные администратором
  • выбрав нужную ВМ, автоматически загрузится opennebula-client и запустит приложение для просмотра удаленного рабочего стола
TODO:
Отказоустойчивое решение