weareinteractive.pm2
Rôle Ansible weareinteractive.pm2
weareinteractive.pm2est un rôle Ansible qui :
- installe pm2
- gère les applications JSON
- configure le service
Installation
Utiliser ansible-galaxy :
$ ansible-galaxy install weareinteractive.pm2
Utiliser requirements.yml :
- src: weareinteractive.pm2
Utiliser git :
$ git clone https://github.com/weareinteractive/ansible-pm2.git weareinteractive.pm2
Dépendances
- Ansible >= 2.4
- Node.js installé, par exemple avec weareinteractive.nodejs
Note :
Étant donné qu'Ansible Galaxy prend maintenant en charge les organisations, ce rôle est passé de
franklinkim.pm2àweareinteractive.pm2!
Variables
Voici une liste de toutes les variables par défaut pour ce rôle, qui sont également disponibles dans defaults/main.yml.
---
# pm2_cmds:
# - run: sendSignal # nom de la commande pm2
# args: SIGUSR2 my-app # arguments optionnels à passer
# path: /var/www/myapp # chemin optionnel de chdir
# ignore_errors: yes # optionnel, ne pas échouer sur les erreurs pm2
# env: # paramètres d'environnement optionnels
# NODE_ENV: production
# pm2_apps:
# - run: pm2.json # vous pouvez également exécuter un fichier .js comme app.js
# cmd: start # commande optionnelle à exécuter sur l'application
# args: --name console_error # arguments optionnels à passer, par exemple à app.js
# path: /var/www/myapp # chemin optionnel de chdir
# env: # paramètres d'environnement optionnels
# NODE_ENV: production
# pm2_post_cmds:
# - run: save # nom de la commande pm2
# args: # arguments optionnels à passer
# path: /var/www/myapp # chemin optionnel de chdir
# ignore_errors: yes # optionnel, ne pas échouer sur les erreurs pm2
# env: # paramètres d'environnement optionnels
# NODE_ENV: production
#
# liste des commandes à exécuter
# note : celles-ci seront exécutées avant la gestion des applications
pm2_cmds:
# note : supprimer toutes les applications initialement à chaque exécution, donc seules les applications configurées existent
- run: delete all
# environnement par défaut pour exécuter les commandes
pm2_cmds_default_env: {}
# liste des commandes à exécuter après la gestion des applications
pm2_post_cmds: []
# environnement par défaut pour exécuter les commandes postérieures
pm2_post_cmds_default_env: {}
# liste des chemins vers les déclarations d'applications JSON
pm2_apps: []
# environnement par défaut pour exécuter les applications
pm2_apps_default_env: {}
# commande par défaut à exécuter sur les applications
pm2_apps_default_cmd: start
# supprimer toutes initialement à chaque exécution
pm2_apps_delete_all: yes
# installer upstart
pm2_upstart: yes
# démarrer au démarrage
pm2_service_enabled: yes
# nom du service pour le système de démarrage
pm2_service_name: pm2-init.sh
# état actuel : démarré, arrêté
pm2_service_state: started
# version
pm2_version:
# utilisateur pour exécuter les commandes pm2
pm2_user: "{{ ansible_user_id }}"
# plateforme de démarrage
pm2_platform:
Gestionnaires
Voici les gestionnaires définis dans handlers/main.yml.
---
- name: redémarrer pm2
service:
name: "{{ pm2_service_name }}"
state: restarted
when: pm2_upstart and pm2_service_state != 'stopped'
- name: recharger pm2
service:
name: "{{ pm2_service_name }}"
state: reloaded
when: pm2_upstart and pm2_service_state != 'stopped'
- name: mettre à jour pm2
shell: pm2 update
when: pm2_upstart and pm2_service_state != 'stopped'
Utilisation
Voici un exemple de playbook :
---
- hosts: all
become: yes
roles:
- weareinteractive.pm2
vars:
# Pour vagrant
#pm2_upstart: yes
#pm2_user: vagrant
#pm2_service_name: pm2-vagrant
# Pour docker
pm2_user: root
pm2_upstart: no # pas de support de service dans docker
# Commun
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
Tests
$ git clone https://github.com/weareinteractive/ansible-pm2.git
$ cd ansible-pm2
$ make test
Contribuer
En l'absence d'un guide de style formel, veillez à maintenir le style de code existant. Ajoutez des tests unitaires et des exemples pour toute nouvelle fonctionnalité ou fonctionnalité modifiée.
- Forkez le projet
- Créez votre branche de fonctionnalité (
git checkout -b ma-nouvelle-fonctionnalité) - Validez vos modifications (
git commit -am 'Ajoutez une nouvelle fonctionnalité') - Poussez vers la branche (
git push origin ma-nouvelle-fonctionnalité) - Créez une nouvelle Pull Request
Note : Pour mettre à jour le fichier README.md, veuillez installer et exécuter ansible-role :
$ gem install ansible-role
$ ansible-role docgen
Licence
Copyright (c) We Are Interactive sous la licence MIT.
ansible-galaxy install weareinteractive.pm2