2016-02-27 3 views
4

Я только начал использовать Ansible, и у меня возникли проблемы с запуском сервера.Запуск сервера с Ansible

У меня есть сервер, который можно запустить с помощью java -jar target/server-1.0-SNAPSHOT.jar. Тем не менее, это запустит сервер и будет постоянно показывать вывод, поэтому Ansible никогда не заканчивается.

Это то, что я пытался, что никогда не заканчивается:

- name: Start server 
    command: chdir=~/server java -jar target/server-1.0-SNAPSHOT.jar 

Что такое правильный способ сделать это?

+1

Вам следует создать сценарий запуска (который не связан с Ansible). Сценарий init.d в Debian или сценарий службы systemd в CentoOS. Затем вы можете использовать модуль 'service' Ansible для запуска/остановки/перезапуска службы. – udondan

+0

Не чистая опция: используйте модуль 'shell' и поместите команду в фоновом режиме, дополнительно отделитесь от оболочки. – heemayl

ответ

3

Либо создайте службу, как предлагает @udondan, либо используйте асинхронную задачу для запуска вашего сервера. http://docs.ansible.com/ansible/playbooks_async.html

+3

async будет работать, но это не так, как говорит @maeh,« правильный »способ сделать это.Асинхронные задачи отлично подходят для задач, которые будут выполняться к концу игры; использование его для запуска сервера/демона, безусловно, не является таковым. – tedder42

2

Как предложено @ Petro026, ваш выбор - асинхронная задача или создание службы.

Я настоятельно рекомендую использовать асинхронную задачу . Это очень хрупкое решение:

  • Что делать, если хост перезагружен?
  • Что делать, если вы дважды запускаете свою игру?
  • Что делать, если ваше серверное приложение просто умирает?

Лучше всего создать службу для него, и, вероятно, самый простой подход к ней будет связана с использованием системы управления технологическим процессом, как supervisord, который поддерживается ansible.

От супервизора документы:

Supervisor представляет собой систему клиент/сервер, который позволяет пользователям контролировать и контролировать ряд процессов на UNIX-подобных операционных систем.

0

Поместите это в PID и отправьте вывод в nohup.

Что-то вроде этого:

поЬир Java -jar цель/сервер-1,0-SNAPSHOT.jar &

В вашем PlayBook:

  • Имя: Запуск сервера Команда: ChDir = ~/сервер nohup java -jar target/server-1.0-SNAPSHOT.jar &

Если вы хотите убить процесс kill -9 #numerofpid.

Смежные вопросы