2013-10-06 2 views
2

Я новичок в Ansible. Я пытаюсь запустить процесс на удаленном хосте, используя очень простой Ansible Playbook.Использование возможности запуска длительной работы на удаленном хосте

Вот как мой сборник пьес выглядит

- 
    hosts: somehost 
    gather_facts: no 
    user: ubuntu 
    tasks: 
    - name: change directory and run jetty server 
     shell: cd /home/ubuntu/code; nohup ./run.sh  
     async: 45 

run.sh называет процесс сервера Java с несколькими параметрами. Мое понимание заключалось в том, что использование async мой процесс на удаленной машине будет продолжаться даже после завершения воспроизведения (что должно произойти примерно через 45 секунд.)

Однако, как только моя плей-книжка выйдет из процесса, запущенного с помощью запуска .sh на удаленных хост-терминалах.

Может кто-нибудь объяснить, что происходит и чего я здесь не хватает.

Спасибо.

ответ

3

Дайте больше времени на асинхронное сканирование через 6 месяцев или год или даже больше, и это должно быть хорошо. Или преобразуйте этот процесс в initscript и используйте сервисный модуль.

и добавить опрос: 0

1

Я согласен. Поскольку он работает долго, я бы назвал его сервисом и запускал его так. Просто создайте сценарий init.d, вытащите его с помощью «копии», а затем запустите службу.

5

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

- 
    hosts: somehost 
    gather_facts: no 
    user: ubuntu 
    tasks: 
    - name: change directory and run jetty server 
     shell: dummy=$(nohup /run.sh &) chdir={{/home/ubuntu/code}}