Scripts ansibles
Déploiement automatisé des applications de Coléo.
Chaque conteneur LXD de l’écosystème de Coléo est rattaché à un playbook. Le playbook est responsable du déploiement de l’environnement sur le conteneur LXD. Le nouvel environnement contiendra l’ensemble des dépendances nécessaires aux déploiements des applications nodeJS, des services postgresql et nginx.
L’écosystème de coléo est un ensemble de 7 conteneurs LXD, chacun dédié à un service. L’automatisation du déploiement pour chacun de ces conteneurs est primordiale afin de faciliter la migration, les mises à jour et permettre de passer rapidement d’un environnement de test à un environnement de production (c.a.d exploitable par les utilisateurs).
Figure — Représentation graphique des 7 conteneurs avec leurs configurations matérielles. Le serveur
synapse.vhost33
est responsable de rediriger la requête cliente vers le bon service.
On retrouve l’ensemble des plabooks dans le dossier plays
. Afin d’éviter de réécrire la roue, j’utilise des rôles ansible pour le déploiement de certains services tels que postgresql
et nginx
. Chaque conteneur LXD dispose d’un playbook.
Dépendances
Test
- ansible (v2.4)
- ansible-galaxy (v2.4)
- vagrant (v2.0)
- virtualbox (v5.2)
Production et Staging
- ansible (v2.4)
- ansible-galaxy (v2.4)
Manual installation on postgres01
Le déploiement de certains services: redis et postgresql, n'a pas encore été automatisée. Pour l'installation de redis, j'ai suivi la procédure écrite par DigitalOcean et disponible à cette adresse
À vos marques...
Installation des rôles externes
La première étape consiste à installer localement les rôles (externes) depuis ansible-galaxy.
bash ansible-galaxy install -r ./roles/requirements.yml
Tester un playbook
Il est ensuite possible de tester un playbook sur une machine virtuelle localement.
# Lancement de la machine virtuelle
cd test/
vagrant destroy # On détruit la machine virtuelle si elle existe.
vagrant up # On relance la machine virtuelle à neuf
# On se déplace vers le dossier contenant les playbooks
cd plays/
# On lance un playbook, dbserver par exemple:
ansible-playbook dbserver.yml — i test.ini
Le flag — i
permet de spécifier le fichier d’inventaire contenant l’adressage des serveurs et certaines variables globales.
Deploiement de l’environnement staging
sur les serveurs
Note: Il faut que python 2.x soit installé sur l'ensemble des machines
NodeJS pour coleo-api
& coleo-media
& coleo-app
ansible-playbook apps.yml — i staging.ini