Настройка машины робота
Это руководство описывает шаги, необходимые при настройке машины робота под управлением Агента версии 1.25.х на Astra Linux 1.7.x.
Агент Оркестратора может работать и запускать роботов в одном из трёх режимов:
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
.
При необходимости, Вы можете использовать другие имена групп, пользователей и каталогов; в этом случае необходимо их изменить в упомянутых файлах.
Содержание
- Действия при установке 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 at xvfb python3-numpy python3-opencv xdotool dotnet-sdk-6.0 graphicsmagick-imagemagick-compat
Подготовка учётных записей и каталогов
Создание общей группы для агента и роботов
Для работы агента Jркестратора и роботов создайте общую группу:
[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
Настройка журналов для режима user
Так как в режиме user
служба агента аркестратора запускается пользователем без административных прав, то необходимо разрешить этому пользователю видеть системные логи агента Оркестратора:
[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
Настройка прав 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
Установка и настройка брандмауэра ufw
описана в статье Межсетевой экран ufw .
Для разрешения доступа к API агента Оркестратора выполните следующее:
[primo-admin@astra-robot ~]$ sudo ufw allow 5002/tcp
Установка агента Оркестратора
Установка агента Оркестратора зависит от режима работы агента, поэтому примеры команд установки будут приведены отдельно для разных режимов.
Режим atd
Разворачивание файлов агента Оркестратора (файл Agent-linux.zip
должен находиться в каталоге /srv/samba/shared/install
и быть доступен для чтения пользователю agent
):
[primo-admin@astra-robot ~]$ sudo -u agent unzip /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent
[primo-admin@astra-robot ~]$ sudo -u agent chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner
Установите агент Оркестратора как службу и настройте автозапуск:
[primo-admin@astra-robot ~]$ sudo cp /opt/Primo/Agent/Primo.Orchestrator.Agent.service /etc/systemd/system/
[primo-admin@astra-robot ~]$ sudo systemctl daemon-reload
[primo-admin@astra-robot ~]$ sudo systemctl enable /etc/systemd/system/Primo.Orchestrator.Agent.service
Режим systemd
Разворачивание файлов агента Оркестратора (файл Agent-linux.zip
должен находиться в каталоге /srv/samba/shared/install
и быть доступен для чтения пользователю agent
):
[primo-admin@astra-robot ~]$ sudo -u agent unzip /srv/samba/shared/install/Agent-linux.zip -d /opt/Primo/Agent
[primo-admin@astra-robot ~]$ sudo -u agent chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner
Установите агент Оркестратора как службу и настройте автозапуск:
[primo-admin@astra-robot ~]$ sudo cp /opt/Primo/Agent/Primo.Orchestrator.Agent.service /etc/systemd/system/
[primo-admin@astra-robot ~]$ sudo systemctl daemon-reload
[primo-admin@astra-robot ~]$ sudo systemctl enable /etc/systemd/system/Primo.Orchestrator.Agent.service
[primo-admin@astra-robot ~]$ sudo -u agent loginctl enable-linger agent
Режим user
Внимание: Команды в этом разделе выполняются пользователем 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
Установите агент Оркестратора как службу и настройте автозапуск:
[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 ~/.config/systemd/user/Primo.Orchestrator.Agent.service
[agent@astra-robot ~]$ loginctl enable-linger agent
[agent@astra-robot ~]$ systemctl --user daemon-reload
Настройка агента Оркестратора
В конфигурационном файле appsettings.ProdLinux.json укажите путь к данным агента и режим запуска роботов:
"Agent": {
"DataPath": "/opt/Primo/AgentData",
...
"RobotStartMethod": "systemd",
},
Убедитесь, что в конфигурационном файле appsettings.ProdLinux.json
правильно указаны команды, с помощью которых агент запускает роботов и управляет машиной (здесь указаны правильные команды для Astra Linux 1.7):
"AgentCommands": {
"At": "/usr/bin/at",
"Reboot": "/usr/sbin/reboot",
"Session": "/usr/bin/fly-wm --execOnly {}"
},
Для запуска графического сеанса и сеанса робота используется программа 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
Запуск службы:
[primo-admin@astra-robot ~]$ sudo systemctl start Primo.Orchestrator.Agent
Просмотр статуса службы:
[primo-admin@astra-robot ~]$ sudo systemctl status Primo.Orchestrator.Agent
Просмотр журнала службы:
[primo-admin@astra-robot ~]$ sudo journalctl -u Primo.Orchestrator.Agent
Остановка службы:
[primo-admin@astra-robot ~]$ sudo systemctl stop Primo.Orchestrator.Agent
Внимание: Ручное обновление агента Оркестратора можно производить ТОЛЬКО при остановленной службе агента Оркестратора!
Обновление файлов агента Оркестратора на машине роботов (файл Agent-linux.zip
должен находиться в каталоге /srv/samba/shared/install
и быть доступен для чтения пользователю agent
):
[primo-admin@astra-robot ~]$ 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
[primo-admin@astra-robot ~]$ sudo -u agent chmod a+x /opt/Primo/Agent/Primo.Orchestrator.Agent /opt/Primo/Agent/LTools.Orchestrator.Agent.Runner
Режим user
Внимание: Команды в этом разделе выполняются пользователем 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