register:
) et appel de la variable dans une autre tâche sous condition (when:
)Dans cet exemple, on déploie une application Node.JS avec NPM sur Centos. Il s’agit d’un exemple de déploiement simple d’un stack de développement.
On définit une variable node_apps_location
dans le jeu.
On peut définir la variable dans la ligne de commande --extra-vars="node_apps_location=/usr/local/opt/node"
- hosts: all
become: yes
vars:
# Vars can also be passed in via CLI with `--extra-vars="name=value"`.
node_apps_location: /usr/local/opt/node
La procédure pour installer des dépôts supplémentaires et leur clé GPG.
- name: Install Remi repo.
yum:
name: "https://rpms.remirepo.net/enterprise/remi-release-7.rpm"
state: present
- name: Import Remi GPG key.
rpm_key:
key: "https://rpms.remirepo.net/RPM-GPG-KEY-remi"
state: present
- name: Install EPEL repo.
yum:
name: epel-release
state: present
- name: Ensure firewalld is stopped (since this is a test server).
service:
name: firewalld
state: stopped
- name: Install Node.js and npm.
yum:
name: npm
state: present
enablerepo: epel
- name: Install Forever (to run our Node.js app).
npm:
name: forever
global: yes
state: present
Voici cette application qui doit être accompagnée du fichier de dépendances package.json
.
cat app/app.js
// Simple Express web server.
// @see http://howtonode.org/getting-started-with-express
// Load the express module.
var express = require('express');
var app = express();
// Respond to requests for / with 'Hello World'.
app.get('/', function(req, res){
res.send('Hello World!');
});
// Listen on port 80 (like a true web server).
app.listen(80);
console.log('Express server started successfully.');
- name: Ensure Node.js app folder exists.
file:
path: "{{ node_apps_location }}"
state: directory
- name: Copy example Node.js app to server.
copy:
src: app
dest: "{{ node_apps_location }}"
- name: Install app dependencies defined in package.json.
npm:
path: "{{ node_apps_location }}/app"
Ici, on utilise forever list
pour connaître la liste de ses applications. forever start
est lancé uniquement quand le chemin de notre application ne se trouve pas dans la valeur enregistrée dans forever_list
.
- name: Check list of running Node.js apps.
command: forever list
register: forever_list
changed_when: false
- name: Start example Node.js app.
command: "forever start {{ node_apps_location }}/app/app.js"
when: "forever_list.stdout.find(node_apps_location + '/app/app.js') == -1"