Skip to Content

Установка Агента на Ubuntu 24.04

Данное руководство описывает установку и настройку агента Оркестратора на Ubuntu 24.04

Агент Оркестратора может работать и запускать роботов в одном из трёх режимов:

  • atd (классический) - рекомендуется использовать только для дистрибутивов Linux не поддерживающих systemd, в этом режиме для запуска, останова и обновления агента необходимы права администратора;
  • systemd (современный) - рекомендуется использовать для дистрибутивов Linux поддерживающих systemd, в этом режиме для запуска, останова и обновления агента необходимы права администратора;
  • user (непривилегированный) - рекомендуется использовать для дистрибутивов Linux поддерживающих systemd и работающих в среде с ограниченными привилегиями, в этом режиме для запуска, останова и обновления агента достаточно прав пользователя обычного пользователя.

Так как systemd поддерживается большинством современных дистрибутивов Linux, то именно этот режим используется по умолчанию.

В данном руководстве используются следующие имена пользователей, групп и каталогов:

  • пользователь primo-admin - пользователь, обладающий административными привилегиями, необходимыми для начальной настройки операционной системы, каталогов и других пользователей и групп;
  • группа primo-rpa - общая группа для агента Оркестратора и роботов, упоминается в файле /etc/sudoers.d/primo-rpa-agent;
  • пользователь agent - пользователь агента Оркестратора, в режиме systemd упоминается в файле Primo.Orchestrator.Agent.service;
  • путь /opt/Primo/Agent - каталог для установки агента Оркестратора, упоминается в файле Primo.Orchestrator.Agent.service;
  • путь /opt/Primo/AgentData - каталог для файлов агента Оркестратора, упоминается в файле appsettings.ProdLinux.json;
  • путь /opt/LTools - каталог роботов, упоминается в файле appsettings.ProdLinux.json.

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

ВНИМАНИЕ Использование ресурсов машины робота (ЦПУ, ОЗУ, дисковое пространство) напрямую зависит от наличия изображения на рабочем столе, разрешения и глубины цвета экрана следующим образом:

  • наличие изображения на рабочем столе требует больше ОЗУ, чем использование сплошного цвета;
  • использование больших глубин цвета требует больше ОЗУ, чем использование маленьких значений, примерная зависимость - для глубин 32 или 24 бит требуется в четыре раза больше ОЗУ, чем для глубины 16 бит. Таким образом, чем больше ресурсов необходимо для одного сеанса робота, тем меньше роботов могут работать одновременно на одной машине робота.

Предварительные настройки

Внимание: В связи с невозможностью использовать окружение рабочего стола GNOME для работы робота, необходимо заменить его на окружение рабочего стола MATE.

В процессе установки Ubuntu Desktop 24.04 необходимо выбрать минимальный набор устанавливаемого ПО, всё необходимое можно доустановить позже.

Предоставьте нужные права:

sudo usermod -aG cdrom,audio,dip,video,plugdev,netdev,lpadmin,sudo primo-admin

Обновите список пакетов:

sudo apt update

Установите окружение рабочего стола MATE:

sudo apt install ubuntu-mate-desktop`

Если в процессе установки будет задан вопрос о том, какой менеджер рабочих столов использовать GDM3 или LightDM, обязательно выберите LightDM.

Далее удалите окружение рабочего стола GNOME:

sudo apt purge ubuntu-desktop gnome-shell sudo apt autoremove

Установите менеджер рабочих столов по умолчанию для всех пользователей:

sudo update-alternatives --config x-session-manager Есть 2 варианта для альтернативы x-session-manager (предоставляет /usr/bin/x-session-manager). Выбор Путь Приор Состояние ------------------------------------------------------------ * 0 /usr/bin/gnome-session 50 автоматический режим 1 /usr/bin/gnome-session 50 ручной режим 2 /usr/bin/mate-session 50 ручной режим Нажмите «enter», чтобы не менять текущий выбор[*], или введите нужное число:

Укажите 2 для /usr/bin/mate-session и нажмите Enter.

Перезагрузите компьютер:

sudo reboot

Установите необходимое ПО для работы агента:

sudo apt -y install at xvfb xsel python3 python3-pyatspi python3-numpy xdotool imagemagick python3-opencv wmctrl tigervnc-standalone-server tigervnc-common

Подготовка учётных записей и каталогов

Создание общей группы для агента и роботов

Для работы агента Оркестратора и роботов создайте общую группу:

sudo groupadd primo-rpa

Создание и настройка учетной записи агента

Для работы агента Оркестратора создайте учётную запись:

sudo useradd -g primo-rpa -m -s /bin/bash agent

Если необходимо, задайте пароль учётной записи:

sudo passwd agent Новый пароль : *** Повторите ввод нового пароля : *** passwd: пароль успешно обновлён

Настройка учетной записи робота

Создание учётной записи робота robot1:

sudo useradd -g primo-rpa -m -s /bin/bash robot1

Установка пароля учётной записи робота robot1:

sudo passwd robot1 Новый пароль : *** Повторите ввод нового пароля : *** passwd: пароль успешно обновлён

После создания учётной записи робота на машине робота необходимо войти в графический сеанс этой учётной записи для инициализации графического окружения.

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

Настройки -> Настройка монитора

ℹ️

Рекомендации по настройке пользователя робота в Оркестраторе (пользователя РДП): Для экономии памяти используйте минимально необходимую глубину цвета экрана - 24 или 16 бит.

Также следует отключить фон рабочего стола:

gsettings set org.mate.background picture-filename '' gsettings set org.mate.background color-shading-type 'solid'

Создание и настройка каталогов агента и роботов

Для работы агента Оркестратора создайте следующие каталоги:

sudo mkdir -p /opt/Primo/Agent /opt/Primo/AgentData /opt/LTools sudo chown agent:primo-rpa /opt/Primo/Agent /opt/Primo/AgentData /opt/LTools sudo chmod g+w /opt/Primo/Agent /opt/Primo/AgentData /opt/LTools

Настройка журналов для режима user

Так как в режиме user служба агента Оркестратора запускается пользователем без административных прав, то необходимо разрешить этому пользователю видеть системные логи агента Оркестратора:

sudo install -m 2755 -g systemd-journal -o root -d /var/log/journal/ sudo systemctl restart systemd-journald

Настройка прав sudo

Настройка прав sudo зависит от режима работы агента, поэтому примеры настройки будут приведены отдельно для разных режимов.

Режим atd

Для корректной работы агента Оркестратора файл /etc/sudoers.d/primo-rpa-agent должен выглядеть следующим образом:

agent ALL = (ALL) NOPASSWD: /usr/sbin/reboot agent ALL = (%primo-rpa) NOPASSWD: /usr/bin/kill agent ALL = (%primo-rpa) NOPASSWD: /usr/bin/at agent ALL = (ALL) NOPASSWD: /usr/bin/systemctl stop Primo.Orchestrator.Agent agent ALL = (ALL) NOPASSWD: /usr/bin/systemctl start Primo.Orchestrator.Agent

Пояснения:

  • первая строка разрешает пользователю agent запуск команды /usr/sbin/reboot с правами пользователя root без ввода пароля, то есть, позволяет агенту перезагрузить машину агента;
  • вторая строка разрешает пользователю agent запуск команды /usr/bin/kill с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту завершить процесс любого робота;
  • третья строка разрешает пользователю agent запуск команды /usr/bin/at с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту запустить робота с помощью службы atd;
  • четвёртая строка разрешает пользователю agent запуск команды /usr/bin/systemctl stop Primo.Orchestrator.Agent с правами пользователя root без ввода пароля, то есть, позволяет агенту остановить свою службу перед обновлением;
  • пятая строка разрешает пользователю agent запуск команды /usr/bin/systemctl start Primo.Orchestrator.Agent с правами пользователя root без ввода пароля, то есть, позволяет агенту запустить свою службу после обновления.
⚠️

Внимание: Никаких других строк (кроме комментариев) в этом файле быть не должно!

Режим systemd

Для корректной работы агента Оркестратора файл /etc/sudoers.d/primo-rpa-agent должен выглядеть следующим образом:

agent ALL = (ALL) NOPASSWD: /usr/sbin/reboot agent ALL = (%primo-rpa) NOPASSWD: /usr/bin/kill agent ALL = (%primo-rpa) NOPASSWD:SETENV: /usr/bin/systemd-run -G --user --unit * agent ALL = (%primo-rpa) NOPASSWD:SETENV: /usr/bin/systemctl --user stop * agent ALL = (%primo-rpa) NOPASSWD: /usr/bin/loginctl enable-linger * agent ALL = (ALL) NOPASSWD: /usr/bin/systemctl stop Primo.Orchestrator.Agent agent ALL = (ALL) NOPASSWD: /usr/bin/systemctl start Primo.Orchestrator.Agent

Пояснения:

  • первая строка разрешает пользователю agent запуск команды /usr/sbin/reboot с правами пользователя root без ввода пароля, то есть, позволяет агенту перезагрузить машину агента;
  • вторая строка разрешает пользователю agent запуск команды /usr/bin/kill с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту завершить процесс любого робота;
  • третья строка разрешает пользователю agent запуск команды /usr/bin/systemd-run с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту запустить сеанс робота с помощью службы systemd;
  • четвёртая строка разрешает пользователю agent запуск команды /usr/bin/systemctl с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту корректно остановить сеанс робота с помощью службы systemd;
  • пятая строка разрешает пользователю agent запуск команды /usr/bin/loginctl с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту включить поддержку сеансов для робота;
  • шестая строка разрешает пользователю agent запуск команды /usr/bin/systemctl stop Primo.Orchestrator.Agent с правами пользователя root без ввода пароля, то есть, позволяет агенту остановить свою службу перед обновлением;
  • седьмая строка разрешает пользователю agent запуск команды /usr/bin/systemctl start Primo.Orchestrator.Agent с правами пользователя root без ввода пароля, то есть, позволяет агенту запустить свою службу после обновления.

Внимание Никаких других строк (кроме комментариев) в этом файле быть не должно!

Режим user

Для корректной работы агента Оркестратора файл /etc/sudoers.d/primo-rpa-agent должен выглядеть следующим образом:

agent ALL = (ALL) NOPASSWD: /usr/sbin/reboot agent ALL = (%primo-rpa) NOPASSWD: /usr/bin/kill agent ALL = (%primo-rpa) NOPASSWD:SETENV: /usr/bin/systemd-run -G --user --unit * agent ALL = (%primo-rpa) NOPASSWD:SETENV: /usr/bin/systemctl --user stop * agent ALL = (%primo-rpa) NOPASSWD: /usr/bin/loginctl enable-linger *

Пояснения:

  • первая строка разрешает пользователю agent запуск команды /usr/sbin/reboot с правами пользователя root без ввода пароля, то есть, позволяет агенту перезагрузить машину агента;
  • вторая строка разрешает пользователю agent запуск команды /usr/bin/kill с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту завершить процесс любого робота;
  • третья строка разрешает пользователю agent запуск команды /usr/bin/systemd-run с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту запустить сеанс робота с помощью службы systemd;
  • четвёртая строка разрешает пользователю agent запуск команды /usr/bin/systemctl с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту корректно остановить сеанс робота с помощью службы systemd;
  • пятая строка разрешает пользователю agent запуск команды /usr/bin/loginctl с правами любого пользователя из группы primo-rpa без ввода пароля, то есть, позволяет агенту включить поддержку сеансов для робота;
⚠️

Внимание: Никаких других строк (кроме комментариев) в этом файле быть не должно!

Настройка правила брандмауэра ufw

Для разрешения доступа к API агента Оркестратора выполните следующее:

sudo ufw allow 5002/tcp

Далее следует перезагрузить машину.

Установка агента Оркестратора

Установка агента Оркестратора зависит от режима работы агента, поэтому примеры команд установки будут приведены отдельно для разных режимов.

Режим atd

Разворачивание файлов агента Оркестратора (файл Agent-linux.zip должен находиться в каталоге /srv/samba/shared/install и быть доступен для чтения пользователю agent):

sudo -u agent unzip /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent sudo -u agent chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner

Установите агент Оркестратора как службу и настройте автозапуск:

sudo cp /opt/Primo/Agent/Primo.Orchestrator.Agent.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable /etc/systemd/system/Primo.Orchestrator.Agent.service

Режим systemd

Разворачивание файлов агента Оркестратора (файл Agent-linux.zip должен находиться в каталоге /srv/samba/shared/install и быть доступен для чтения пользователю agent):

sudo -u agent unzip /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent sudo -u agent chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner

Установите агент Оркестратора как службу и настройте автозапуск:

sudo cp /opt/Primo/Agent/Primo.Orchestrator.Agent.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable /etc/systemd/system/Primo.Orchestrator.Agent.service sudo -u agent loginctl enable-linger agent

Режим user

⚠️

Внимание: Команды в этом разделе выполняются пользователем agent!

Разворачивание файлов агента Оркестратора (файл Agent-linux.zip должен находиться в каталоге /srv/samba/shared/install и быть доступен для чтения пользователю agent):

unzip /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner

Установите агент Оркестратора как службу и настройте автозапуск:

mkdir -p ~/.config/systemd/user cp /opt/Primo/Agent/Primo.Orchestrator.Agent.user.service ~/.config/systemd/user/Primo.Orchestrator.Agent.service systemctl --user enable ~/.config/systemd/user/Primo.Orchestrator.Agent.service loginctl enable-linger agent systemctl --user daemon-reload

Настройка агента оркестратора

В конфигурационном файле appsettings.ProdLinux.json укажите путь к данным агента и режим запуска роботов:

"Agent": { "DataPath": "/opt/Primo/AgentData", ... "RobotStartMethod": "systemd", },

Убедитесь, что в конфигурационном файле appsettings.ProdLinux.json правильно указаны команды, с помощью которых агент запускает роботов и управляет машиной:

"AgentCommands": { "At": "/usr/bin/at", "Reboot": "/usr/sbin/reboot", "Session": "/usr/bin/gnome-session" },

Для запуска графического сеанса и сеанса робота используется программа LTools.Orchestrator.Agent.Runner, идущая в комплекте с агентом. Файлом конфигурации этой программы является файл appsettings.Runner.json:

... "MinimumLevel": { "Default": "Warning", "Override": { // "LTools.Orchestrator.Agent.Runner.XvfbSessionLogger": "Information", // "LTools.Orchestrator.Agent.Runner.RobotSessionLogger": "Information" } }, ...

Для расширенной диагностики запуска графического сеанса раскомментируйте строку с XvfbSessionLogger. Для расширенной диагностики запуска сеанса окружения рабочего стола и робота раскомментируйте строку с RobotSessionLogger. Файлы журналов по умолчанию находятся в /opt/Primo/Agent/Logs.

Запуск, останов и ручное обновление службы агента Оркестратора

Команды запуска и останова службы агента Оркестратора зависят от режима работы, поэтому примеры команд будут приведены отдельно для разных режимов.

Режимы atd и systemd

Запуск службы:

sudo systemctl start Primo.Orchestrator.Agent

Просмотр статуса службы:

sudo systemctl status Primo.Orchestrator.Agent

Просмотр журнала службы:

sudo journalctl -u Primo.Orchestrator.Agent

Остановка службы:

sudo systemctl stop Primo.Orchestrator.Agent
🚫

Внимание: Ручное обновление агента Оркестратора можно производить ТОЛЬКО при остановленной службе агента Оркестратора!

Обновление файлов агента Оркестратора на машине роботов (файл Agent-linux.zip должен находиться в каталоге /srv/samba/shared/install и быть доступен для чтения пользователю agent):

sudo -u agent unzip -o -u /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent -x appsettings.ProdLinux.json appsettings.json appsettings.Runner.json sudo -u agent chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner

Режим user

⚠️

Внимание: Команды в этом разделе выполняются пользователем agent!

Запуск службы:

systemctl --user start Primo.Orchestrator.Agent

Просмотр статуса службы:

systemctl --user status Primo.Orchestrator.Agent

Просмотр журнала службы:

journalctl --user -u Primo.Orchestrator.Agent

Остановка службы:

systemctl --user stop Primo.Orchestrator.Agent
🚫

Внимание: Ручное обновление агента Оркестратора можно производить ТОЛЬКО при остановленной службе агента Оркестратора!

Обновление файлов агента Оркестратора на машине роботов (файл Agent-linux.zip должен находиться в каталоге /srv/samba/shared/install и быть доступен для чтения пользователю agent):

unzip -o -u /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent -x appsettings.ProdLinux.json appsettings.json appsettings.Runner.json chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner