Fleet Commander: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 8: Строка 8:


Fleet Commander использует libvirt и KVM для запуска сеанса виртуального рабочего стола, который позволяет пользователю в реальном времени редактировать конфигурацию приложений в системе шаблонов, которая будет применена на клиентах.
Fleet Commander использует libvirt и KVM для запуска сеанса виртуального рабочего стола, который позволяет пользователю в реальном времени редактировать конфигурацию приложений в системе шаблонов, которая будет применена на клиентах.
{{Attention|FC admin/client поддерживают только GNOME-based DE. Работа по добавлению поддержки KDE ведется.}}
== Установка и настройка Fleet Commander ==
Как уже говорилось выше, Fleet Commander состоит из трех компонентов. В демонстрационных целях будет рассмотрен deploy ipa server + libvirtd на одном хосте на proxmox VM.
===Подготовка домена libvirt в качестве шаблона FC===
Шаблон FC - это отдельный домен libvirt с запущенным на нем Fleet Commander Logger.<br />
Шаблон запускается при старте FC live-сессии из web-интерфейса cockpit. А логгер в свою очередь отслеживает сделанные изменения в шаблоне и передает их в реальном времени FC плагину для cockpit.<br />


{{Note|Шаблон запускается как qemu snapshot, то есть все изменения, совершенные над ним, существуют только пока запущен этот domain}}
{{Note|Шаблон запускается как qemu snapshot, то есть все изменения, совершенные над ним, существуют только пока запущен этот domain}}


== Установка и настройка Fleet Commander ==
====системные требования====
Как уже говорилось выше, Fleet Commander состоит из трех компонентов. В общем случае, ''admin'' и ''libvirtd host'' могут быть развернуты на одной машине.
1) proxmox VM должна поддерживать вложенную виртуализацию (VM внутри VM), для этого выбираем для VM тип процессора <span style="color:green">host</span>.
Проверяется через <span style="color:blue">/sys/module/kvm_intel/parameters/nested</span> или <span style="color:blue">/sys/module/kvm_amd/parameters/nested</span> в зависимости от процессора. <span style="color:green">1</span> или <span style="color:green">Y</span> говорит о том, что вложенная виртуализация поддерживается. Также можно использовать утилиту <span style="color:blue">virt-host-validate</span> из пакета <span style="color:blue">libvirt-client</span>.
 
2) размер RAM должен удовлетворять запросам двух систем + ipa server
 
3) рекомендовано подключить отдельный hard disk, на котором будет храниться libvirt домен.
 
====установка libvirt====
<syntaxhighlight lang="console">
  [root@dc ~]# apt-get install libvirt virt-install
</syntaxhighlight>
 
====запуск libvirtd====
<syntaxhighlight lang="console">
  [root@dc ~]# systemctl enable --now libvirtd
</syntaxhighlight>
 
====настройка libvirtd====
Проверяем, что <span style="color:blue">default</span> сеть определена, запущена и автозапускаемая.
<syntaxhighlight lang="console">
  [root@dc ~]# virsh net-list --all
    Имя      Статус    Автозапуск  Persistent
  ----------------------------------------------
    default  активен  yes          yes
</syntaxhighlight>
 
Если <span style="color:blue">default</span> сеть не определена:
<syntaxhighlight lang="console">
  [root@dc ~]# virsh net-define /usr/share/libvirt/networks/default.xml
  Network default defined from /usr/share/libvirt/networks/default.xml
</syntaxhighlight>
 
Помечаем <span style="color:blue">default</span> сеть как автозапускаемую:
<syntaxhighlight lang="console">
  [root@dc ~]# virsh net-autostart default
  Добавлена метка автоматического запуска сети default
</syntaxhighlight>
 
Запускаем <span style="color:blue">default</span> сеть:
<syntaxhighlight lang="console">
  [root@dc ~]# virsh net-start default
  Сеть default запущена
</syntaxhighlight>
 
====установка OS на libvirt домен====
Запускаем домен, например:
<syntaxhighlight lang="console">
  [root@dc ~]# virt-install --name p9_mate --ram 4096 --cpu kvm64 --vcpus 2 --disk path=/dev/sdb,cache=none,bus=virtio --network bridge=virbr0 --graphics spice,listen=127.0.0.1,password=test --cdrom /ALT/images/p9/workstation/x86_64/alt-workstation-9.1-x86_64.iso
</syntaxhighlight>
 
Подключаемся через remote-viewer и производим установку OS, например:
<syntaxhighlight lang="console">
  [someuser@localpc ~]$ virt-viewer --connect qemu+ssh://test@dc.ipa.test/system
</syntaxhighlight>
 
После окончания установки OS, доустанавливаем FC logger:
<syntaxhighlight lang="console">
[root@template ~]# apt-get install fleet-commander-logger
</syntaxhighlight>


===Установка и настройка Fleet Commander Admin===
===Установка и настройка Fleet Commander Admin===
Строка 47: Строка 114:
и запустим
и запустим
  <syntaxhighlight lang="console">
  <syntaxhighlight lang="console">
   # systemctl start cockpit
   [root@dc ~]# systemctl enable --now cockpit.socket
  </syntaxhighlight>
  </syntaxhighlight>


web-интерфейс Cockpit будет доступен по адресу
По умолчанию web-интерфейс Cockpit будет доступен по адресу
  http://localhost:9090/
  https://localhost:9090/fleet-commander-admin
 
вход осуществляется по логину указанному при установке FreeIPA сервера.
 
Установим Fleet Commander плагин для Cockpit
# apt-get install fleet-commander-admin


после перезагрузки демона Cockpit на web-интерфейсе появится доступ к настройке Fleet Commander.
{{Note|Аутентифицироваться в cockpit нужно доменным пользователем, имеющим необходимые ACL на deskprofiles. В демонстрационных целях это будет ''admin''}}


Настроить Fleet Commander достаточно один раз при первом запуске. Окно настроек выглядит следующим образом:
4) настроить Fleet Commander достаточно один раз при первом запуске. Окно настроек выглядит следующим образом:
<br>[[Файл:fc_settings2.png|450px]]<br>
<br>[[Файл:fc_settings2.png|450px]]<br>


Строка 68: Строка 130:


Для запуска live-сессии необходимо работающее ssh-соединение с libvirt хостом. Fleet Commander генерирует собственный открытый ключ, который необходимо добавить в ''.ssh/authorized_keys'' для соответствующего пользователя на libvirt хосте. Это можно сделать с помощью <code>''Install public key''</code> на форме настройки, при этом будет необходимо ввести пароль пользователя. Пароль используется только для установки ключа и нигде не хранится.
Для запуска live-сессии необходимо работающее ssh-соединение с libvirt хостом. Fleet Commander генерирует собственный открытый ключ, который необходимо добавить в ''.ssh/authorized_keys'' для соответствующего пользователя на libvirt хосте. Это можно сделать с помощью <code>''Install public key''</code> на форме настройки, при этом будет необходимо ввести пароль пользователя. Пароль используется только для установки ключа и нигде не хранится.
{{Note|В ALTLinux по умолчанию ''password'' аутентификация sshd отключена, также отключена ''password'' аутентификация sshd для ''root''. Поэтому рекомендованный вариант - это добавление открытой части ssh ключа FC в ''.ssh/authorized_keys'' вручную.}}


==== Работа с профилями ====
==== Работа с профилями ====
Строка 100: Строка 164:


=== Настройка шаблона ===
=== Настройка шаблона ===
Шаблон это отдельная машина с запущенным на ней Fleet Commander Logger. Шаблон запускается на "админской" машине в live-сессии. Логгер отслеживает сделанные изменения в шаблоне и сохраняет их.
Если в качестве libvirt хоста используется FreeIPA сервер, то шаблон необходимо иметь на нем же.
На template-машине достаточно установить логгер:
# apt-get install fleet-commander-logger
После выключения шаблона можно попробовать запустить live-сессию. Для этого в web-интерфейсе cocpkit'а необходимо нажать <code>''Edit''</code> напротив нужного профиля и внизу всплывшего окна кнопку <code>''Live session''</code>. В появившейся форме будет список всех доступных шаблонов, кликнув по шаблону он начнет загружаться.
После выключения шаблона можно попробовать запустить live-сессию. Для этого в web-интерфейсе cocpkit'а необходимо нажать <code>''Edit''</code> напротив нужного профиля и внизу всплывшего окна кнопку <code>''Live session''</code>. В появившейся форме будет список всех доступных шаблонов, кликнув по шаблону он начнет загружаться.



Версия от 09:22, 28 сентября 2020

Fc ico.png.png

Fleet commander - это инструмент для управления и развертывания профилей в большой сети пользователей и рабочих станций.

Fleet Commander состоит из трех компонентов:

  • плагин FreeIPA, который позволяет хранить политики на контроллере домена(LDAP)
  • плагин Cockpit, предоставляющий Web интерфейс для администрирования
  • служба на стороне члена домена, применяющая политики

Fleet Commander использует libvirt и KVM для запуска сеанса виртуального рабочего стола, который позволяет пользователю в реальном времени редактировать конфигурацию приложений в системе шаблонов, которая будет применена на клиентах.

Внимание! FC admin/client поддерживают только GNOME-based DE. Работа по добавлению поддержки KDE ведется.


Установка и настройка Fleet Commander

Как уже говорилось выше, Fleet Commander состоит из трех компонентов. В демонстрационных целях будет рассмотрен deploy ipa server + libvirtd на одном хосте на proxmox VM.

Подготовка домена libvirt в качестве шаблона FC

Шаблон FC - это отдельный домен libvirt с запущенным на нем Fleet Commander Logger.
Шаблон запускается при старте FC live-сессии из web-интерфейса cockpit. А логгер в свою очередь отслеживает сделанные изменения в шаблоне и передает их в реальном времени FC плагину для cockpit.

Примечание: Шаблон запускается как qemu snapshot, то есть все изменения, совершенные над ним, существуют только пока запущен этот domain


системные требования

1) proxmox VM должна поддерживать вложенную виртуализацию (VM внутри VM), для этого выбираем для VM тип процессора host. Проверяется через /sys/module/kvm_intel/parameters/nested или /sys/module/kvm_amd/parameters/nested в зависимости от процессора. 1 или Y говорит о том, что вложенная виртуализация поддерживается. Также можно использовать утилиту virt-host-validate из пакета libvirt-client.

2) размер RAM должен удовлетворять запросам двух систем + ipa server

3) рекомендовано подключить отдельный hard disk, на котором будет храниться libvirt домен.

установка libvirt

  [root@dc ~]# apt-get install libvirt virt-install

запуск libvirtd

  [root@dc ~]# systemctl enable --now libvirtd

настройка libvirtd

Проверяем, что default сеть определена, запущена и автозапускаемая.

  [root@dc ~]# virsh net-list --all
    Имя       Статус    Автозапуск   Persistent
   ----------------------------------------------
    default   активен   yes          yes

Если default сеть не определена:

  [root@dc ~]# virsh net-define /usr/share/libvirt/networks/default.xml
   Network default defined from /usr/share/libvirt/networks/default.xml

Помечаем default сеть как автозапускаемую:

  [root@dc ~]# virsh net-autostart default
   Добавлена метка автоматического запуска сети default

Запускаем default сеть:

  [root@dc ~]# virsh net-start default
   Сеть default запущена

установка OS на libvirt домен

Запускаем домен, например:

  [root@dc ~]# virt-install --name p9_mate --ram 4096 --cpu kvm64 --vcpus 2 --disk path=/dev/sdb,cache=none,bus=virtio --network bridge=virbr0 --graphics spice,listen=127.0.0.1,password=test --cdrom /ALT/images/p9/workstation/x86_64/alt-workstation-9.1-x86_64.iso

Подключаемся через remote-viewer и производим установку OS, например:

  [someuser@localpc ~]$ virt-viewer --connect qemu+ssh://test@dc.ipa.test/system

После окончания установки OS, доустанавливаем FC logger:

 [root@template ~]# apt-get install fleet-commander-logger

Установка и настройка Fleet Commander Admin

1) предварительно необходимо установить и настроить FreeIPA сервер, с созданием домашнего каталога (добавить опцию --mkhomedir). Инструкцию по установке FreeIPA сервера можно посмотреть в соответствующем разделе.

2) установим freeipa-desktop-profile:

  [root@dc ~]# apt-get install freeipa-desktop-profile

и проверим, что плагин работает:

  [root@dc ~]# kinit admin
  [root@dc ~]# ipa deskprofileconfig-show
   Priority of profile application: 1
Примечание: Если на выходе такая ошибка:
  [root@dc ~]# ipa deskprofileconfig-show
  ipa: ERROR: неизвестная команда "deskprofileconfig-show"
то нужно почистить кеш текущему пользователю и повторить команду:
 [root@dc ~]# rm -rf  ~/.cache/ipa
 [root@dc ~]# ipa deskprofileconfig-show
  Priority of profile application: 1


3) установим fleet-commander-admin:

  [root@dc ~]# apt-get install fleet-commander-admin

и запустим

  [root@dc ~]# systemctl enable --now cockpit.socket

По умолчанию web-интерфейс Cockpit будет доступен по адресу

https://localhost:9090/fleet-commander-admin
Примечание: Аутентифицироваться в cockpit нужно доменным пользователем, имеющим необходимые ACL на deskprofiles. В демонстрационных целях это будет admin


4) настроить Fleet Commander достаточно один раз при первом запуске. Окно настроек выглядит следующим образом:
Fc settings2.png

Fleet Commander позволяет установить глобальную политику для определения того, как применять несколько профилей: к конкретному пользователю, к группе, к хосту, к группе хостов. По умолчанию это User-Group-Host-Hostgroup.

В форму настройки необходимо ввести адрес и имя пользователя libvirt-хоста для подключения. Если пользователь не является привилегированным, то переключаем Libvirt mode в режим сеанса.

Для запуска live-сессии необходимо работающее ssh-соединение с libvirt хостом. Fleet Commander генерирует собственный открытый ключ, который необходимо добавить в .ssh/authorized_keys для соответствующего пользователя на libvirt хосте. Это можно сделать с помощью Install public key на форме настройки, при этом будет необходимо ввести пароль пользователя. Пароль используется только для установки ключа и нигде не хранится.

Примечание: В ALTLinux по умолчанию password аутентификация sshd отключена, также отключена password аутентификация sshd для root. Поэтому рекомендованный вариант - это добавление открытой части ssh ключа FC в .ssh/authorized_keys вручную.


Работа с профилями

После настройки Fleet Commander Admin необходимо создать и настроить профиль. Редактирование профиля производится из этого же интерфейса. После нажатия Add Profile появится форма настройки профиля:
Profile settings1.png

Форма настройки профиля содержит следующие поля:

  • Name - имя профиля
  • Description - описание профиля
  • Priority - приоритет профиля
  • Users - пользователи, к которым будет применен профиль
  • Groups - группы, к которым будет применен профиль
  • Hosts - хосты, к которым будет применен профиль
  • Host groups - группы хостов, к которым будет применен профиль

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

После редактирования профиля сохраним изменения и перейдем к настройка libvirt хоста.

Настройка libvirt-хоста

В качестве libvirt-хоста может выступать как отдельная машина, так и машина с Fleet Commander Admin.

Установим необходимый пакет

# apt-get install libvirt

и запустим его сервис

# systemctl enable libvirtd.service
# systemctl start libvirtd.service

Если есть необходимость использовать привилегированного пользователя libvirt хоста, то необходимо разрешить root-доступ по ssh. Для этого в конфигурационном файле /etc/openssh/sshd_config нужно указать PermitRootLogin yes и перезагрузить ssh-сервис:

# systemctl restart sshd.service

Настройка шаблона

После выключения шаблона можно попробовать запустить live-сессию. Для этого в web-интерфейсе cocpkit'а необходимо нажать Edit напротив нужного профиля и внизу всплывшего окна кнопку Live session. В появившейся форме будет список всех доступных шаблонов, кликнув по шаблону он начнет загружаться.

Установка и настройка Fleet Commander Client

Клиентская машина должна быть введена в домен, как установить и настроить FreeIPA Client можно посмотреть в соответствующем разделе.

Установим необходимый пакет:

# apt-get install fleet-commander-client

Создадим доменного пользователя. Это можно сделать как через консоль, так и через web-интерфейс по адресу FreeIPA сервера, войдя под "админской" учетной записью.

Устранение неполадок Fleet Commander

Для отлавливания любых ошибок возникших во время работы Fleet Commander Admin необходимо добавить log_level = debug в
/etc/xdg/fleet-commander-admin.conf. Возникшие ошибки можно отследить используя journalctl.

Can’t initialize Fleet Commander

Проверьте установлен ли freeipa-desktop-profile, если нет, то установите. Часто такая ошибка может возникнуть в случае отсутствия домашнего каталога, если установка FreeIPA Server была запущена без опции --mkhomedir. Для решения данной проблемы можно воспользоваться командой:

# mkhomedir_helper `username`

Если вышеприведенные способы не помогают, проверьте есть ли у администратора доступ к командам интерфейса:

# ipa console
(Custom IPA interactive Python console)
>>'deskprofileconfig_show' in api.Command
False

В этом случае кэш пользователя должен быть удален, это можно сделать добавив force_schema_check = True в /etc/ipa/fleetcommander.conf в секцию [global].

Не заходит под доменным пользователем

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

# ssh -l `username` localhost

после чего попытка входа под доменным пользователем удается.

Error getting domain list

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

Использование Fleet Commander

Администрирование происходит через Cockpit web-интерфейс. Откроем http://localhost:9090/fleet-commander-admin и запустим live-сессию (Edit -> Live session). Появится окно выбора машины для загрузки в live-сессии. Необходимо выбрать машину на которой установлен Fleet Commander Logger и запустить ее. Загруженная машина является шаблоном, все сделанные на ней изменения будут отловлены логгером, сохранены и применены на клиентских системах.

Fleet Commander работает со следующими приложениями:

  • GSettings
  • LibreOffice
  • Chromium
  • Chrome
  • Firefox
  • NetworkManager

Проверим работу Fleet Commander. На загруженной машине с логгером запустим chromium, и сделаем пару изменений: добавим закладку https://www.altlinux.org и в настройках браузера поставим галочку Показывать кнопку "Главная страница". После чего в web-интерфейсе Cockpit нажмем Review and submit. Должно появиться окно со списком сделанных изменений:
Fc logger changes.png

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

Теперь можно проверить, как изменения применились на клиенте. Загрузим клиентскую машину, войдем в систему под доменным пользователем и запустим chromium (он должен быть предварительно установлен). Сделанные изменения успешно применились и доменный пользователь не сможет их отменить.

Chrom set.png
Chrom bkm.png


Проблемы связанные с использованием

В текущей версии Fleet Commander выявлены некоторые проблемы, в том числе и уязвимости. О них мы поговорим ниже.

  • Незащищенный профиль Firefox и Chromium. Владельцем создаваемого Fleet Commander'ом профиля для Firefox и Chromium является доменный пользователь. Поэтому, он может изменить его модификатор доступа и соответственно содержимое файла.
  • Отлавливаются не все настройки Chromium. Fleet Commander имеет свою встроенную политику настроек Chromium, которые отслеживаются логгером, остальные настройки игнорируются.
  • Не отслеживаются настройки Firefox. Логгер не всегда правильно определяет путь до профиля настроек Firefox, поэтому не может отследить изменения в настройках.
  • Возможны различные ошибки в работе с GSettings.

Так же для корректной работы Fleet Commander с Firefox необходимо добавить pref("toolkit.policies.perUserDir", true) в
/usr/lib64/firefox/browser/defaults/preferences/all-altlinux.js.