Запуск двух оболочек одновременно с использованием Ansible - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь создать сценарий развертывания с использованием Ansible, который запускает и запускает мой внешний и внутренний сервер на моем локальном хосте. Прямо сейчас у меня есть две задачи в моей книге игр: одна открывает оболочку и запускает мой внутренний сервер, а другая - мой внешний интерфейс. Я сделал обе задачи async:259200 с poll:0.

В некотором смысле, это работает, но я чувствую, что это немного грязно. Используя этот метод, я не могу продолжать поддерживать оболочки (я не могу выключить его). Кто-нибудь знает, как я могу запустить свой веб-интерфейс и серверную часть на своем локальном хосте, используя ansible, не создавая две оболочки, которые будут работать в течение месяца?

1 Ответ

0 голосов
/ 16 октября 2019

Чтобы сделать это, используйте модуль оболочки, но начните его с nohup, timeout и заканчивайте >/dev/null 2>&1 & примерно так:

- name: run shell script in background
  shell: nohup timeout 2592000 /path/to/script >/dev/null 2>&1 &
  • nohup будетпозволит вам продолжать работу, даже если пользователь, запустивший ее, выйдет из системы
  • timeout автоматически завершит выполнение команды через столько секунд (в нашем примере 30 дней)
  • >/dev/null 2>&1перенаправьте все stdout и stderr в / dev / null, чтобы не нужно было отправлять сообщения на ваш терминал
  • & заставит его работать в фоновом режиме

Если ваше требованиемесяц вместо 30 дней, вы можете просто создать задачу cron, чтобы убить любой процесс с именем вашего скрипта в первый день каждого месяца и пропустить команду timeout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...