weareinteractive.pm2

Rol Ansible weareinteractive.pm2

Estado de Construcción Galaxy Etiquetas de GitHub Estrellas de GitHub

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

Nota:

Dado que Ansible Galaxy ahora soporta organizaciones, este rol se ha trasladado de franklinkim.pm2 a weareinteractive.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.

  1. Haz un fork
  2. Crea tu rama de función (git checkout -b my-new-feature)
  3. Confirma tus cambios (git commit -am 'Agregar alguna función')
  4. Envía a la rama (git push origin my-new-feature)
  5. 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.

Acerca del proyecto

Installs pm2 and manages apps

Instalar
ansible-galaxy install weareinteractive.pm2
Licencia
mit
Descargas
30.6k
Propietario