pm2
Роль weareinteractive.pm2 для Ansible
weareinteractive.pm2
— это роль для Ansible, которая:
- устанавливает pm2
- управляет приложениями в формате JSON
- настраивает сервис
Установка
Используя ansible-galaxy
:
$ ansible-galaxy install weareinteractive.pm2
Используя requirements.yml
:
- src: weareinteractive.pm2
Используя git
:
$ git clone https://github.com/weareinteractive/ansible-pm2.git weareinteractive.pm2
Зависимости
- Ansible >= 2.4
- установлен nodejs, т.е. с помощью weareinteractive.nodejs
Примечание:
Поскольку Ansible Galaxy теперь поддерживает организации, эта роль была перенесена с
franklinkim.pm2
наweareinteractive.pm2
!
Переменные
Вот список всех переменных по умолчанию для этой роли, которые также доступны в defaults/main.yml
.
---
# pm2_cmds:
# - run: sendSignal # название команды pm2
# args: SIGUSR2 my-app # необязательные аргументы для передачи
# path: /var/www/myapp # необязательный путь к каталогу
# ignore_errors: yes # необязательный параметр, не останавливать на ошибках pm2
# env: # необязательные настройки окружения
# NODE_ENV: production
# pm2_apps:
# - run: pm2.json # вы также можете запустить .js файл, например app.js
# cmd: start # необязательная команда для запуска приложения
# args: --name console_error # необязательные аргументы для передачи, например, для app.js
# path: /var/www/myapp # необязательный путь к каталогу
# env: # необязательные настройки окружения
# NODE_ENV: production
# pm2_post_cmds:
# - run: save # название команды pm2
# args: # необязательные аргументы для передачи
# path: /var/www/myapp # необязательный путь к каталогу
# ignore_errors: yes # необязательный параметр, не останавливать на ошибках pm2
# env: # необязательные настройки окружения
# NODE_ENV: production
#
# список команд для выполнения
# примечание: они будут выполняться до управления приложениями
pm2_cmds:
# примечание: изначально удалять все приложения при каждом запуске
- run: delete all
# стандартное окружение для выполнения команд
pm2_cmds_default_env: {}
# список команд пост-обработки
# примечание: они будут выполняться после управления приложениями
pm2_post_cmds: []
# стандартное окружение для выполнения пост-команд
pm2_post_cmds_default_env: {}
# список путей к объявлениям приложений в формате JSON
pm2_apps: []
# стандартное окружение для выполнения приложений
pm2_apps_default_env: {}
# стандартная команда для выполнения приложений
pm2_apps_default_cmd: start
# первоначально удалить все при каждом запуске
pm2_apps_delete_all: yes
# установить upstart
pm2_upstart: yes
# запуск при загрузке
pm2_service_enabled: yes
# имя сервиса для системы автозагрузки
pm2_service_name: pm2-init.sh
# текущее состояние: запущен, остановлен
pm2_service_state: started
# версия
pm2_version:
# пользователь для выполнения команд pm2
pm2_user: "{{ ansible_user_id }}"
# платформа автозагрузки
pm2_platform:
Обработчики
Это обработчики, определенные в handlers/main.yml
.
---
- name: перезапустить pm2
service:
name: "{{ pm2_service_name }}"
state: restarted
when: pm2_upstart and pm2_service_state != 'stopped'
- name: перезагрузить pm2
service:
name: "{{ pm2_service_name }}"
state: reloaded
when: pm2_upstart and pm2_service_state != 'stopped'
- name: обновить pm2
shell: pm2 update
when: pm2_upstart and pm2_service_state != 'stopped'
Использование
Вот пример плейбука:
---
- hosts: all
become: yes
roles:
- weareinteractive.pm2
vars:
# Для vagrant
#pm2_upstart: yes
#pm2_user: vagrant
#pm2_service_name: pm2-vagrant
# Для docker
pm2_user: root
pm2_upstart: no # нет поддержки сервиса в docker
# Общие настройки
pm2_cmds:
- run: delete
args: console_error
ignore_errors: yes
pm2_apps:
- run: apps.json
path: "/etc/ansible/roles/weareinteractive.pm2/tests"
cmd: startOrGracefulReload
- run: console_error.js
args: --name console_error
path: "/etc/ansible/roles/weareinteractive.pm2/tests/apps"
cmd: start
env:
NODE_ENV: dev
pm2_apps_default_env:
NODE_ENV: production
Тестирование
$ git clone https://github.com/weareinteractive/ansible-pm2.git
$ cd ansible-pm2
$ make test
Как внести вклад
Вместо формального руководства по стилю следите за тем, чтобы сохранить существующий стиль кодирования. Добавляйте юнит-тесты и примеры для любой новой или измененной функциональности.
- Сделайте форк
- Создайте вашу ветку (
git checkout -b my-new-feature
) - Зафиксируйте ваши изменения (
git commit -am 'Добавить новую функцию'
) - Отправьте в ветку (
git push origin my-new-feature
) - Создайте новый Pull Request
Примечание: чтобы обновить файл README.md
, установите и запустите ansible-role
:
$ gem install ansible-role
$ ansible-role docgen
Лицензия
Авторские права (c) We Are Interactive по лицензии MIT.
Установить
ansible-galaxy install weareinteractive/ansible-pm2
Лицензия
mit
Загрузки
26129
Владелец