pm2

Роль weareinteractive.pm2 для Ansible

Статус сборки Galaxy Теги GitHub Звезды GitHub

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 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

Как внести вклад

Вместо формального руководства по стилю следите за тем, чтобы сохранить существующий стиль кодирования. Добавляйте юнит-тесты и примеры для любой новой или измененной функциональности.

  1. Сделайте форк
  2. Создайте вашу ветку (git checkout -b my-new-feature)
  3. Зафиксируйте ваши изменения (git commit -am 'Добавить новую функцию')
  4. Отправьте в ветку (git push origin my-new-feature)
  5. Создайте новый Pull Request

Примечание: чтобы обновить файл README.md, установите и запустите ansible-role:

$ gem install ansible-role
$ ansible-role docgen

Лицензия

Авторские права (c) We Are Interactive по лицензии MIT.

О проекте

Installs pm2 and manages apps

Установить
ansible-galaxy install weareinteractive/ansible-pm2
Лицензия
mit
Загрузки
23958
Владелец