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

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
[[Файл:fc_ico.png.png|frameless|right]]
[[Файл:fc_ico.png.png|frameless|right]]
'''Fleet commander''' - это инструмент для управления и развертывания профилей в большой сети пользователей и рабочих станций.
'''Fleet commander''' - это инструмент для управления и развертывания конфигурации окружения рабочего стола(DE) в большой сети пользователей и рабочих станций.


Fleet Commander состоит из трех компонентов:
Fleet Commander состоит из трех компонентов:
Строка 7: Строка 7:
*служба на стороне члена домена, применяющая политики
*служба на стороне члена домена, применяющая политики


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


{{Attention|FC admin/client поддерживают только GNOME-based DE. Работа по добавлению поддержки KDE ведется.}}
{{Attention|FC admin/client поддерживают только GNOME-based DE. Работа по добавлению поддержки KDE ведется.}}
{{Attention|FC не занимается доставкой конфигурации системы.}}


== Установка и настройка Fleet Commander ==
== Установка и настройка Fleet Commander ==
Строка 81: Строка 82:
  </syntaxhighlight>
  </syntaxhighlight>


{{Note|Домен, который планируется использовать как FC шаблон, должен быть в выключенном состоянии. В противном случае FC не позволит запустить live сессию на этом домене.}
===Установка и настройка Fleet Commander Admin===
===Установка и настройка Fleet Commander Admin===
1) предварительно необходимо установить и настроить FreeIPA сервер, с созданием домашнего каталога (добавить опцию ''--mkhomedir''). Инструкцию по установке FreeIPA сервера можно посмотреть в [[FreeIPA| соответствующем разделе]].
1) предварительно необходимо установить и настроить FreeIPA сервер, с созданием домашнего каталога (добавить опцию ''--mkhomedir''). Инструкцию по установке FreeIPA сервера можно посмотреть в [[FreeIPA| соответствующем разделе]].
Строка 127: Строка 129:
Fleet Commander позволяет установить глобальную политику для определения того, как применять несколько профилей: ''к конкретному пользователю, к группе, к хосту, к группе хостов''. По умолчанию это ''User-Group-Host-Hostgroup''.
Fleet Commander позволяет установить глобальную политику для определения того, как применять несколько профилей: ''к конкретному пользователю, к группе, к хосту, к группе хостов''. По умолчанию это ''User-Group-Host-Hostgroup''.


В форму настройки необходимо ввести адрес и имя пользователя libvirt-хоста для подключения. Если пользователь не является привилегированным, то переключаем <code>''Libvirt mode''</code> в режим сеанса.
В форму настройки необходимо ввести адрес и имя пользователя libvirt-хоста для подключения. Для запуска live-сессии необходимо работающее ssh-соединение с libvirt хостом. Fleet Commander генерирует собственный ключ для аутентификации по открытому ключу с sshd. В ALTLinux по умолчанию ''password'' аутентификация sshd отключена, также отключена аутентификация sshd для ''root''. Поэтому рекомендованный вариант - это добавить специального выделенного пользователя с членством в группе <span style="color:blue">vmusers</span>, и вручную добавить ему открытую часть ssh ключа FC в <span style="color:blue">.ssh/authorized_keys</span>.
 
Для запуска live-сессии необходимо работающее ssh-соединение с libvirt хостом. Fleet Commander генерирует собственный ключ для ssh. В ALTLinux по умолчанию ''password'' аутентификация sshd отключена, также отключена аутентификация sshd для ''root''. Поэтому рекомендованный вариант - это добавить специального выделенного пользователя с членством в группе <span style="color:blue">vmusers</span>, и вручную добавить ему открытую часть ssh ключа FC в <span style="color:blue">.ssh/authorized_keys</span>.


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


После редактирования профиля сохраним изменения.
После редактирования профиля сохраним изменения.
=== Настройка libvirt-хоста ===
В качестве libvirt-хоста может выступать как отдельная машина, так и машина с Fleet Commander Admin.
Установим необходимый пакет
# apt-get install libvirt
и запустим его сервис
# systemctl enable libvirtd.service
# systemctl start libvirtd.service
Если есть необходимость использовать привилегированного пользователя libvirt хоста, то необходимо разрешить root-доступ по ssh. Для этого в конфигурационном файле ''/etc/openssh/sshd_config'' нужно указать <code>''PermitRootLogin yes''</code> и перезагрузить ssh-сервис:
# systemctl restart sshd.service


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


=== Установка и настройка Fleet Commander Client ===
=== Установка и настройка Fleet Commander Client ===
Строка 168: Строка 155:


Установим необходимый пакет:
Установим необходимый пакет:
  # apt-get install fleet-commander-client
  <syntaxhighlight lang="console">
  [root@dc ~]# apt-get install fleet-commander-client
</syntaxhighlight>


Создадим доменного пользователя. Это можно сделать как через консоль, так и через web-интерфейс по адресу FreeIPA сервера, войдя под "админской" учетной записью.
== Использование Fleet Commander ==
 
Администрирование происходит через Cockpit web-интерфейс. Откроем ''https://localhost:9090/fleet-commander-admin'' и запустим live-сессию ''(Edit -> Live session)''. Появится окно выбора шаблона для загрузки в live-сессии. Все сделанные изменения в этой сессии, которые поддерживаются FC, будут отображены в cockpit. Администратор указывает какие из них стоит сохранить. При нажатии <code>''Save''</code> произойдет сохранение профиля и завершение live-сессии.
== Устранение неполадок Fleet Commander ==
Для отлавливания любых ошибок возникших во время работы Fleet Commander Admin необходимо добавить <code>''log_level = debug''</code> в <br>''/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


В этом случае кэш пользователя должен быть удален, это можно сделать добавив <code>''force_schema_check = True''</code> в ''/etc/ipa/fleetcommander.conf'' в секцию ''[global]''.
{{Attention|При закрытии вкладки браузера или браузера с cockpit live-сессия прервется и изменения, внесенные за время ее существования, будут потеряны.}}
 
=== Не заходит под доменным пользователем ===
После создания доменного пользователя и попытки входа может возникнуть ошибка недоступности домашнего каталога. Обычно помогает выполнение
# 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 работает со следующими приложениями:
Fleet Commander работает со следующими приложениями:
Строка 229: Строка 194:


Так же для корректной работы Fleet Commander с Firefox необходимо добавить <code>''pref("toolkit.policies.perUserDir", true)''</code> в <br>''/usr/lib64/firefox/browser/defaults/preferences/all-altlinux.js''.
Так же для корректной работы Fleet Commander с Firefox необходимо добавить <code>''pref("toolkit.policies.perUserDir", true)''</code> в <br>''/usr/lib64/firefox/browser/defaults/preferences/all-altlinux.js''.
== Устранение неполадок Fleet Commander ==
Для отлавливания любых ошибок возникших во время работы Fleet Commander Admin необходимо добавить <code>''log_level = debug''</code> в <br>''/etc/xdg/fleet-commander-admin.conf''. Возникшие ошибки можно отследить используя ''journalctl''.
=== Can’t initialize Fleet Commander ===
Проверьте установлен ли ''freeipa-desktop-profile'', если нет, то установите. Часто такая ошибка может возникнуть в случае отсутствия домашнего каталога, если установка FreeIPA Server была запущена без опции ''--mkhomedir''. Для решения данной проблемы можно воспользоваться командой:
<syntaxhighlight lang="console">
[root@dc ~]# mkhomedir_helper `username`
</syntaxhighlight>
=== Не заходит под доменным пользователем ===
После создания доменного пользователя и попытки входа может возникнуть ошибка недоступности домашнего каталога. Обычно помогает выполнение
# ssh -l `username` localhost
после чего попытка входа под доменным пользователем удается.
=== Error getting domain list ===
Ошибка, которая возникает при попытки подключения к live-сессии. Обычно проблема связана с неправильной конфигурацией libvirt-хоста. Проверьте установлен и запущен ли libvirt на libvirt хосте.


[[Категория:Корпоративная инфраструктура]]
[[Категория:Корпоративная инфраструктура]]

Версия от 17:14, 28 сентября 2020

Fc ico.png.png

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

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

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

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

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


Установка и настройка 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

{{Note|Домен, который планируется использовать как FC шаблон, должен быть в выключенном состоянии. В противном случае FC не позволит запустить live сессию на этом домене.}

Установка и настройка 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

и запустим cockpit:

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

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

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


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

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

В форму настройки необходимо ввести адрес и имя пользователя libvirt-хоста для подключения. Для запуска live-сессии необходимо работающее ssh-соединение с libvirt хостом. Fleet Commander генерирует собственный ключ для аутентификации по открытому ключу с sshd. В ALTLinux по умолчанию password аутентификация sshd отключена, также отключена аутентификация sshd для root. Поэтому рекомендованный вариант - это добавить специального выделенного пользователя с членством в группе vmusers, и вручную добавить ему открытую часть ssh ключа FC в .ssh/authorized_keys.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Внимание! При закрытии вкладки браузера или браузера с cockpit live-сессия прервется и изменения, внесенные за время ее существования, будут потеряны.


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.

Устранение неполадок 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. Для решения данной проблемы можно воспользоваться командой:

 [root@dc ~]# mkhomedir_helper `username`

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

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

# ssh -l `username` localhost

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

Error getting domain list

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