Выполнить сценарий оболочки на сервере, используя Ansible - PullRequest
0 голосов
/ 26 апреля 2020

Мне нужно запустить скрипт на нескольких серверах, используя Ansible. Я использую следующий код.

-name: start script
 hosts: list_of_host
 become: yes
 gather_facts: no
 role:
   - startscript

в стартовом скрипте у меня есть код ниже ...

-name: start script
 shell: /bin/bash /home/ansible/test_script.sh
 chnaged_when: false

Test_script - это всегда запущенный процесс на сервере. поэтому, когда я выполняю эту команду, она не выходит с этого сервера. Мне нужно, чтобы он запускал скрипт на сервере и выходил и go на другой сервер для запуска скрипта.

1 Ответ

1 голос
/ 26 апреля 2020

Если /home/ansible/test_script.sh "вечно работает", вы должны преобразовать это в службу и запустить ее через systemctl.

Очевидно, ansible будет ожидать завершения команды shell: ..

shell не следует использовать для «вечно работающих» сценариев.

Вы также можете запустить /home/ansible/test_script.sh, запустив screen и выполнив сценарий внутри него, чтобы он продолжал выполняться после выхода ansible,

или вы можете попробовать перевести этот скрипт в фоновый режим, добавив & в конце вашей команды shell:, а также добавив к ней префикс nohup поэтому оно не прерывается, когда ansible 'ss sh соединение разрывается

...