weareinteractive.pm2
Rôle Ansible weareinteractive.pm2
weareinteractive.pm2
est 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