LINUX.ORG.RU

Запуск GUI-программы через Ansible на 15-ти хостах

 , , , ,


2

2

Мне нужно запустить через Ansible программу сразу на ~15 хостах. Программа GUI-шная, но запустить ее надо в терминале, чтобы в случае вылета программы, терминал остался, можно было быстро посмотреть выхлоп.

  - name: Запуск программы
    shell: "export DISPLAY=:0.0 ; fly-term --noclose --workdir /usr/share/ourProject -e \"./programm\""

Проблема в том, что Ansible ждет завершения всей команды модуля shell. И работает Ansible в 5 потоков, то есть, запускает прогу только на 5 хостах и ждет.

Я пробовал отвязываться от терминала так:
    shell: "export DISPLAY=:0.0 ; (fly-term --noclose --workdir /usr/share/ourProject -e \"./programm\" &)"

Но тогда программа запускается и сразу завершается. Блоками по 5 хостов: сначала на первых 5 хостах, через секунду на следующих 5 и так далее.

Я курил маны на модули shell, raw, command, но ничего работающего как нада сделать не смог.

Что нужно прописать в команду, чтобы программа просто была запущена на хостах, а Ansible поехала работать дальше без ожидания?

★★★★★

Ага, надо было еще добавить:

    async: 999999999
    poll: 0

async с ненулевым значением заставит задачу выполняться асинхронно, и будет пытаться ждать 999999999 секунд до завершения.

poll с нулевым значением заставит Ansible не ждать завершения задачи.

В результате обе опции позволят стартовать программу и не дожидаться ее завершения (одной только опцией poll без опции async обойтись нельзя).

Никаких конструкций ( команда &) использовать в данном случае не нужно.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Блин все равно проблема.

Теперь я эти задачи не могу потушить из другого плейбука.

shell: "killall -9 programm"

- не срабатывает.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

А не срабатывает потому, что процесса programm нет в наличии.

А есть такие процессы:

$ ps aux | grep programm
user     21960  0.0  0.0  10756  1196 ?        S    15:49   0:00 /bin/sh -c export DISPLAY=:0.0 ; fly-term --noclose --workdir /usr/share/ourProject -e "./programm"
user     21961  0.0  0.9 285908 20044 ?        Sl   15:49   0:00 fly-term --noclose --workdir /usr/share/ourProject -e ./programm

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Ага, команда для завершения процесса таки срабатывает такая:

shell: "pkill -f 'fly-term --noclose --workdir /usr/share/ourProject -e ./programm'"

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от TaV0x222

На самом деле полезная информация, хотя и забавно немного выглядит переписка с самим собой. Астру чаще всего эксплуатируют люди не с самыми развитыми навыками администрирования, так что пригодится.

yetanother ★★
()

Годный мануал, в любом случае спасибо !

pinachet ★★★★★
()
Ответ на: комментарий от TaV0x222

Иногда такие самодиалоги очень полезны потом читать, всё это остается на форме и видно в поисковых системах. Меня лично ни капли не смущает подобное, ТС-у спасибо, иногда я сам по какой-то проблеме так пишу

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от yetanother

Астру чаще всего эксплуатируют люди не с самыми развитыми навыками администрирования, так что пригодится.

В Астре очень странный терминал fly-term. Он не порождает отдельный процесс с программой при запуске программы через опцию -e. Вот пойди догадайся сразу о такой особенности.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

В Астре очень странный терминал fly-term.

Кстати, я вместо него использую tilix

yetanother ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.