Запуск Node.js приложения
Теперь мы будем использовать forever(который мы установили ранее) для запуска приложения.
- name: Check list of running Node.js apps.
command: forever list
register: forever_list
changed_when: false
- name: Start example Node.js app.
command: "forever start {{ node_apps_location }}/app/app.js"
when: "forever_list.stdout.find('{{ node_apps_location }}/app/app.js') == -1"
В первой инструкции мы делаем следующее:
- register создает новую переменную forever_list, которая будет использована в следующей инструкции, чтобы определить когда следует запустить инструкции. register хранит выходные данные (stdout, stderr) заданной команды в переданной ей переменной.
- changed_when сообщает Ansible, когда инструкция приводит к изменению состояния сервера. В этом случае мы знаем, что команда forever list никогда не внесет изменения на сервер, так что мы просто скажем false — сервер никогда не изменит свое состояние при выполнении команды.
Вторая инструкция фактически запускает приложение, используя Forever. Мы также могли бы запустить приложение с помощью вызова node {{ node_apps_location }}/app/app.js, но мы не смогли бы полностью контролировать процесс, и нам также нужно было бы использовать nohup и &, чтобы избежать зависания playbook.