weareinteractive.pm2
Rol Ansible weareinteractive.pm2
weareinteractive.pm2
es 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.pm2
aweareinteractive.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