weareinteractive.pm2
Rol Ansible weareinteractive.pm2
weareinteractive.pm2es un rol de Ansible que:
- instala pm2
- gestiona aplicaciones JSON
- configura el servicio
Instalación
Usando ansible-galaxy:
$ ansible-galaxy install weareinteractive.pm2
Usando requirements.yml:
- src: weareinteractive.pm2
Usando git:
$ git clone https://github.com/weareinteractive/ansible-pm2.git weareinteractive.pm2
Dependencias
- Ansible >= 2.4
- nodejs instalado, es decir, con weareinteractive.nodejs
Nota:
Dado que Ansible Galaxy ahora soporta organizaciones, este rol se ha trasladado de
franklinkim.pm2aweareinteractive.pm2!
Variables
Aquí tienes una lista de todas las variables predeterminadas para este rol, que también están disponibles en defaults/main.yml.
---
# pm2_cmds:
# - run: sendSignal # nombre del comando pm2
# args: SIGUSR2 my-app # argumentos opcionales a pasar
# path: /var/www/myapp # ruta opcional chdir
# ignore_errors: yes # opcional no fallar en errores de pm2
# env: # configuraciones opcionales de entorno
# NODE_ENV: production
# pm2_apps:
# - run: pm2.json # también puedes ejecutar un archivo .js como app.js
# cmd: start # comando opcional para ejecutar en la app
# args: --name console_error # argumentos opcionales a pasar, es decir, a app.js
# path: /var/www/myapp # ruta opcional chdir
# env: # configuraciones opcionales de entorno
# NODE_ENV: production
# pm2_post_cmds:
# - run: save # nombre del comando pm2
# args: # argumentos opcionales a pasar
# path: /var/www/myapp # ruta opcional chdir
# ignore_errors: yes # opcional no fallar en errores de pm2
# env: # configuraciones opcionales de entorno
# NODE_ENV: production
#
# lista de comandos a ejecutar
# nota: estos se ejecutarán antes de gestionar apps
pm2_cmds:
# nota: eliminar todas las apps inicialmente en cada ejecución para que solo existan las apps configuradas
- run: delete all
# entorno predeterminado para ejecutar comandos
pm2_cmds_default_env: {}
# lista de comandos posteriores a ejecutar
# nota: estos se ejecutarán después de gestionar apps
pm2_post_cmds: []
# entorno predeterminado para ejecutar comandos posteriores
pm2_post_cmds_default_env: {}
# lista de rutas a declaraciones de apps JSON
pm2_apps: []
# entorno predeterminado para ejecutar apps
pm2_apps_default_env: {}
# comando predeterminado para ejecutar en apps
pm2_apps_default_cmd: start
# eliminar todas inicialmente en cada ejecución
pm2_apps_delete_all: yes
# instalar upstart
pm2_upstart: yes
# iniciar al arrancar
pm2_service_enabled: yes
# nombre del servicio para el sistema de inicio
pm2_service_name: pm2-init.sh
# estado actual: started, stopped
pm2_service_state: started
# versión
pm2_version:
# usuario para ejecutar comandos pm2
pm2_user: "{{ ansible_user_id }}"
# plataforma de inicio
pm2_platform:
Manejadores
Estos son los manejadores que están definidos en handlers/main.yml.
---
- name: reiniciar pm2
service:
name: "{{ pm2_service_name }}"
state: restarted
when: pm2_upstart and pm2_service_state != 'stopped'
- name: recargar pm2
service:
name: "{{ pm2_service_name }}"
state: reloaded
when: pm2_upstart and pm2_service_state != 'stopped'
- name: actualizar pm2
shell: pm2 update
when: pm2_upstart and pm2_service_state != 'stopped'
Uso
Este es un ejemplo de un playbook:
---
- hosts: all
become: yes
roles:
- weareinteractive.pm2
vars:
# Para vagrant
#pm2_upstart: yes
#pm2_user: vagrant
#pm2_service_name: pm2-vagrant
# Para docker
pm2_user: root
pm2_upstart: no # sin soporte de servicio dentro de docker
# Común
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
Pruebas
$ git clone https://github.com/weareinteractive/ansible-pm2.git
$ cd ansible-pm2
$ make test
Contribuciones
A falta de una guía de estilo formal, cuida de mantener el estilo de codificación existente. Agrega pruebas unitarias y ejemplos para cualquier nueva funcionalidad o cambios.
- Haz un fork
- Crea tu rama de función (
git checkout -b my-new-feature) - Confirma tus cambios (
git commit -am 'Agregar alguna función') - Envía a la rama (
git push origin my-new-feature) - Crea una nueva Pull Request
Nota: Para actualizar el archivo README.md, por favor instala y ejecuta ansible-role:
$ gem install ansible-role
$ ansible-role docgen
Licencia
Derechos de autor (c) We Are Interactive bajo la licencia MIT.
ansible-galaxy install weareinteractive.pm2