Astra Linux 1.7.х настройка машины робота для Agent 1.26.7+
Данная инструкция предназначена для Agent 1.26.7 и выше. Для более старых версий (1.25.x и ниже) используйте: Общая инструкция по установке агента
Важно! Начиная с версии 1.26.7.1, автоматическое обновление Агента НЕ РАБОТАЕТ. Обновление необходимо выполнять ВРУЧНУЮ.
Агент оркестратора запускает роботов средствами su - используя пароль пользователя робота. Для запуска, останова и обновления агента достаточно прав обычного пользователя, что позволяет использовать агента в среде с ограниченными привилегиями.
В данном руководстве используются следующие имена пользователей, групп и каталогов:
- пользователь
primo-admin- пользователь обладающий административными привилегиями необходимыми для начальной настройки операционной системы, каталогов и других пользователей и групп; - группа
primo-rpa- общая группа для агента оркестратора и роботов, упоминается в файле/etc/sudoers.d/primo-rpa-agent; - пользователь
agent- пользователь агента оркестратора; - путь
/opt/Primo/Agent- каталог для установки агента оркестратора, упоминается в файлеPrimo.Orchestrator.Agent.service; - путь
/opt/Primo/AgentData- каталог для файлов агента оркестратора, упоминается в файлеappsettings.ProdLinux.json; - путь
/opt/LTools- каталог роботов, упоминается в файлеappsettings.ProdLinux.json.
ВНИМАНИЕ Использование ресурсов машины робота (ЦПУ, ОЗУ, дисковое пространство) напрямую зависит от наличия изображения на рабочем столе, разрешения и глубины цвета экрана следующим образом:
- наличие изображения на рабочем столе требует больше ОЗУ чем использование сплошного цвета;
- использование больших глубин цвета требует больше ОЗУ чем использование маленьких значений, примерная зависимость - для глубин 32 или 24 бит требуется в четыре раза больше ОЗУ чем для глубины 16 бит. В итоге, чем больше ресурсов необходимо для одного сеанса робота тем меньше роботов могут работать одновременно на одной машине робота.
Содержание
- Действия при установке Astra Linux 1.7.х
- Подготовка учётных записей и каталогов
- Установка агента оркестратора
- Сценарии настройки процесса запуска робота
Действия при установке Astra Linux 1.7.х
При установке машины робота под управлением Astra Linux 1.7.х необходимо:
- на экране Настройка учётных записей и паролей создать пользователя-администратора (далее -
primo-admin).
Создание пользователя
Если пользователь primo-admin не был создан при установке как пользователь-администратор, то наделить его необходимыми привилегиями можно с помощью следующей команды:
[admin@astra-robot ~]$ sudo usermod -G cdrom,floppy,audio,dip,video,plugdev,netdev,lpadmin,astra-console,astra-admin primo-adminУстановка дополнительного ПО и создание дополнительных пользователей будет описана ниже.
Настройка дополнительного ПО
- Выполните подключение машины робота к репозиториям
main,update,baseиextended. Сами репозитории описаны в статье Интернет-репозитории Astra Linux Special Edition x.7 . Настройка локальных зеркал этих репозиториев описана в статье Создание репозиториев для операционной системы Astra Linux Special Edition x.7 в закрытом сегменте
!ВАЖНО! Локальные репозитории необходимо выгружать на машине, имеющей доступ в Интернет.
Рекомендуется выделить одну машину под управлением Astra Linux 1.7.х для размещения на ней сервера репозиториев.
Для машины под управлением Astra Linux 1.7.х с доступом в Интернет файл /etc/apt/sources.list может выглядеть следующим образом:
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce- Проверьте доступность репозиториев, используя следующую команду:
[primo-admin@astra-robot ~]$ sudo apt updateРепозитории main, update, base и extended должны присутствовать в выводе команды.
- Установите необходимое для работы робота ПО:
[primo-admin@astra-robot ~]$ sudo apt -y install xvfb python3-numpy python3-opencv xdotool graphicsmagick-imagemagick-compat tigervnc-standalone-server tigervnc-common expectПодготовка учётных записей и каталогов
Создание общей группы для агента и роботов
Для работы агента оркестратора и роботов создайте общую группу:
[primo-admin@astra-robot ~]$ sudo groupadd primo-rpaСоздание и настройка учетной записи агента
Для работы агента оркестратора создайте учётную запись:
[primo-admin@astra-robot ~]$ sudo useradd -g primo-rpa -m -s /bin/bash agentЕсли необходимо, задайте пароль учётной записи:
[primo-admin@redos-robot ~]$ sudo passwd agent
Новый пароль : ***
Повторите ввод нового пароля : ***
passwd: пароль успешно обновлёнНастройка учетной записи робота
Создание учётной записи робота robot1:
[primo-admin@astra-robot ~]$ sudo useradd -g primo-rpa -m -s /bin/bash robot1Установка пароля учётной записи робота robot1:
[primo-admin@astra-robot ~]$ sudo passwd robot1
Новый пароль : ***
Повторите ввод нового пароля : ***
passwd: пароль успешно обновлёнПосле создания учётной записи робота на машине робота необходимо войти в графический сеанс этой учётной записи для инициализации графического окружения.
Рекомендуется отключить фон рабочего стола для экономии памяти. Для этого используйте:
ПКМ на рабочем столе -> Свойства -> Обои, удалить обои и логотип.
Запомните разрешение экрана, при котором тестируются действия робота - поиск изображений, клики и т.п., чтобы настроить такое же разрешение пользователю робота в Оркестраторе:
Пуск -> Настройка монитора.
Рекомендации по настройке пользователя робота в Оркестраторе (пользователя РДП):
Для экономии памяти используйте минимально необходимую глубину цвета экрана - 24 или 16 бит.
Создание и настройка каталогов агента и роботов
Для работы агента оркестратора создайте следующие каталоги:
[primo-admin@astra-robot ~]$ sudo mkdir -p /opt/Primo/Agent /opt/Primo/AgentData /opt/LTools
[primo-admin@astra-robot ~]$ sudo chown agent:primo-rpa /opt/Primo/Agent /opt/Primo/AgentData /opt/LTools
[primo-admin@astra-robot ~]$ sudo chmod g+w /opt/Primo/Agent /opt/Primo/AgentData /opt/LToolsНастройка журналов
Так как служба агента аркестратора запускается пользователем без административных прав, то необходимо разрешить этому пользователю видеть системные логи агента оркестратора:
[primo-admin@astra-robot ~]$ sudo install -m 2755 -g systemd-journal -o root -d /var/log/journal/
[primo-admin@astra-robot ~]$ sudo systemctl restart systemd-journaldНастройка прав sudo
Для корректной работы агента оркестратора файл /etc/sudoers.d/primo-rpa-agent должен выглядеть следующим образом:
agent ALL=(root) NOPASSWD: /usr/sbin/reboot
agent ALL=(root) NOPASSWD: /usr/bin/systemd-run -G --uid=agent --gid=primo-rpa --property=EnvironmentFile=/dev/shm/agent-*-env /opt/Primo/Agent/launch-as-user.expect
Пояснения:
- первая строка разрешает пользователю
agentзапуск команды/usr/sbin/rebootс правами пользователяrootбез ввода пароля, то есть, позволяет агенту перезагрузить машину агента; - вторая строка разрешает пользователю
agentзапуск команды/usr/bin/systemd-runс правами пользователяrootбез ввода пароля, то есть, позволяет агенту запустить сеанс робота с помощью службы systemd.
Внимание Никаких других строк (кроме комментариев) в этом файле быть не должно!
Настройка правила брандмауэра ufw
Установка и настройка брандмауэра ufw описана в статье Межсетевой экран ufw .
Для разрешения доступа к API агента оркестратора выполните следующее:
[primo-admin@astra-robot ~]$ sudo ufw allow 5002/tcpУстановка агента оркестратора
Внимание Команды в этом разделе выполняются пользователем agent!
Разворачивание файлов агента оркестратора (файл Agent-linux.zip должен находиться в каталоге /srv/samba/shared/install и быть доступен для чтения пользователю agent):
[agent@astra-robot ~]$ unzip /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent
[agent@astra-robot ~]$ chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner /opt/Primo/Agent/launch-as-user.expectУстановите агент оркестратора как службу и настройте автозапуск:
[agent@astra-robot ~]$ mkdir -p ~/.config/systemd/user
[agent@astra-robot ~]$ cp /opt/Primo/Agent/Primo.Orchestrator.Agent.user.service ~/.config/systemd/user/Primo.Orchestrator.Agent.service
[agent@astra-robot ~]$ systemctl --user enable Primo.Orchestrator.Agent.service
[agent@astra-robot ~]$ loginctl enable-linger agent
[agent@astra-robot ~]$ systemctl --user daemon-reloadНастройка агента оркестратора
В конфигурационном файле appsettings.ProdLinux.json укажите путь к данным агента:
<pre>
"Agent": {
<b>"DataPath": "/opt/Primo/AgentData",</b>
},
</pre>Убедитесь, что в конфигурационном файле appsettings.ProdLinux.json правильно указаны команды, с помощью которых агент запускает роботов и управляет машиной (здесь указаны правильные команды для Astra Linux 1.7):
<pre>
"AgentCommands": {
<b>"Reboot": "/usr/sbin/reboot",</b>
<b>"Session": "/usr/bin/fly-wm --execOnly {}"</b>
},
</pre>Для запуска графического сеанса и сеанса робота используется программа LTools.Orchestrator.Agent.Runner идущая в комплекте с агентом. Файлом конфигурации этой программы является файл appsettings.Runner.json:
...
"MinimumLevel": {
"Default": "Warning",
"Override": {
// "LTools.Orchestrator.Agent.Runner.Loggers.XServerLogger": "Information",
// "LTools.Orchestrator.Agent.Runner.Loggers.RobotSessionLogger": "Information"
}
},
...Для расширенной диагностики запуска графического сеанса раскоментируйте строку с XServerLogger. Для расширенной диагностики запуска сеанса окружения рабочего стола и робота раскоментируйте строку с RobotSessionLogger. Файлы журналов по умолчанию находятся в /opt/Primo/Agent/Logs.
Для включения возможности записывать журналы Agent.Runner’а в разные файлы в зависимости от пользователя робота укажите имя файла в конфигурации следующим образом:
...
"Args": {
"path": "/opt/Primo/Agent/Logs/Robot-runner-.txt",
"retainedFileCountLimit": "20",
...Подстрока ‘Robot’ в пути файла будет заменена на имя пользоваетля робота.
Запуск, останов и ручное обновление службы агента оркестратора
Внимание Команды в этом разделе выполняются пользователем agent!
Запуск службы:
[agent@astra-robot ~]$ systemctl --user start Primo.Orchestrator.AgentПросмотр статуса службы:
[agent@astra-robot ~]$ systemctl --user status Primo.Orchestrator.AgentПросмотр журнала службы:
[agent@astra-robot ~]$ journalctl --user -u Primo.Orchestrator.AgentОстановка службы:
[agent@astra-robot ~]$ systemctl --user stop Primo.Orchestrator.AgentВнимание Ручное обновление агента оркестратора можно производить ТОЛЬКО при остановленной службе агента оркестратора!
Обновление файлов агента оркестратора на машине роботов (файл Agent-linux.zip должен находиться в каталоге /srv/samba/shared/install и быть доступен для чтения пользователю agent):
[agent@astra-robot ~]$ unzip -o -u /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent -x appsettings.ProdLinux.json appsettings.json appsettings.Runner.json
[agent@astra-robot ~]$ chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner /opt/Primo/Agent/launch-as-user.expectСценарии настройки процесса запуска робота
Описанные в этом разделе возможности доступны в Агенте 25.7.8+ и 26.6+
Процесс запуска робота
Рассмотрим шаги запуска робота (все сценарии выполняются с правами пользователя робота):
- С помощью
systemd-run/su -запускается сценарийstart-0-runner.sh, который содержит команду запуска Agent.Runner’а. Задачей Agent.Runner’а является настройка и запуск сервера Xwindow и сеанса для работы робота. - После успешной настройки и запуска сервера Xwindow, Agent.Runner запускает сценарий
start-1-session.sh, который содержит команды настройки и запуска сеанса графической оболочки (например, fly-wm в Astra Linux или MATE в RedOS Linux). - После успешной настройки и запуска сеанса графической оболочки запускается сценарий
start-2-robot.sh, который содержит команду запуска процесса робота с аргументами.
Сценарии настройки запуска робота
В каждом из упомянутых ваше сценариев (start-0-runner.sh, start-1-session.sh и start-2-robot.sh) есть команды для проверки наличия и запуска (при наличии) сценариев настройки каждого этапа.
~/.config/robot/pre-runner.sh
Если этот файл существует и является исполняемым, то он запускается перед запуском Agent.Runner’а. Если этот сценарий что-то выводит на консоль, то этот вывод записывается в /var/log/syslog. Во время работы этого сценария, сервер Xwindow ещё не запущен, графический сеанс не доступен, а доступен только низкоуровневый сеанс systemd.
~/.config/robot/post-runner.sh
Если этот файл существует и является исполняемым, то он запускается после завершения Agent.Runner’а. Если этот сценарий что-то выводит на консоль, то этот вывод записывается в /var/log/syslog. Во время работы этого сценария, сервер Xwindow уже остановлен, графический сеанс не доступен, а доступен только низкоуровневый сеанс systemd.
~/.config/robot/pre-session.sh
Если этот файл существует и является исполняемым, то он запускается перед запуском графической оболочки. Если этот сценарий что-то выводит на консоль, то этот вывод записывается в журнал Agent.Runner’а. Во время работы этого сценария, сервер Xwindow уже запущен, но графический сеанс не доступен, а доступен только низкоуровневый сеанс systemd.
~/.config/robot/post-session.sh
Если этот файл существует и является исполняемым, то он запускается после завершения графической оболочки. Если этот сценарий что-то выводит на консоль, то этот вывод записывается в журнал Agent.Runner’а. Во время работы этого сценария, сервер Xwindow ещё запущен, графический сеанс не доступен, а доступен только низкоуровневый сеанс systemd.
~/.config/robot/pre-robot.sh
Если этот файл существует и является исполняемым, то он запускается перед запуском робота. Если этот сценарий что-то выводит на консоль, то этот вывод записывается в журнал Agent.Runner’а. Во время работы этого сценария, сервер Xwindow уже запущен, графический сеанс доступен, а также доступен низкоуровневый сеанс systemd.
~/.config/robot/post-robot.sh
Если этот файл существует и является исполняемым, то он запускается после завершения робота. Если этот сценарий что-то выводит на консоль, то этот вывод записывается в журнал Agent.Runner’а. Во время работы этого сценария, сервер Xwindow ещё запущен, графический сеанс доступен, а также доступен низкоуровневый сеанс systemd.
Пример использования сценария
Для обеспечения работоспособности окна загрузки браузера в некоторых случаях необходим процесс xdg-desktop-portal-kde. Что бы он работал перед запуском робота, файл ~/.config/robot/pre-robot.sh может выглядеть так:
#!/bin/sh
/usr/lib/x86_64-linux-gnu/libexec/xdg-desktop-portal-kde