Dans le billet précédent (https://blog.atolcd.com/ansible/) nous avons abordé succinctement ce qu’était Ansible et ses potentielles utilisations. Au sein du pôle ECM d’Atol CD, nous avons fait le choix d’utiliser cet outil pour nous aider au quotidien.

Objectifs

Le pôle ECM d’Atol CD utilise d’ores et déjà des technologies de déploiement automatisé pour la mise en oeuvre de serveurs de démonstration mais aussi pour permettre aux développeurs d’avoir des environnements de développement au plus proche de l’installation en production. Cette automatisation est rendue possible grâce à Puppet (https://puppet.com/). Ce dernier est également utilisé pour l’infogérance de notre cloud. 

Le choix d’Ansible au sein du pôle ECM est régi par différents objectifs:

  • fournir un moyen de déployer un environnement de développement couplé avec le gestionnaire de machine virtuelle Vagrant (https://www.vagrantup.com/)
  • fournir un moyen de déployer les solutions Alfresco chez nos clients qui ne nécessite que très peu de pré-requis, qui soit fiable et facile d’utilisation (déploiement de modules par exemple)
  • fournir un moyen de provisionner au sein d’Atol CD les serveurs de démonstration tout en maintenant la cohabitation avec Puppet 
  • rédiger et ne maintenir qu’un seul code et garder une uniformité dans nos différents déploiements
  • dissocier le déploiement Alfresco  de l’infogérance assurée par notre service réseaux

Périmètre fonctionnel actuel

Aujourd’hui les travaux sur Ansible permettent d’effectuer les actions suivantes :

  • installation des briques nécessaires pour Alfresco Content Services dans les versions 6.0 ou supérieures
  • déploiement et redéploiement de modules (compatibles également avec les version 5.X d’Alfresco)
  • customisation/paramétrage de l’installation
  • possibilité d’éclater les services sur différents noeuds
  • recopie d’environnements par exemple de production vers formation. (Attention toutefois aux volumétries trop importantes)

# L’utilisation des playbook dans la pratique

Voyons comment se construit une commande ansible-playbook pour jouer un provisionning

Anatomie de la commande

ansible-playbook -i mon_inventaire.yml playbook.yml –extra-vars ”@variables.yml” –limit serveur_cible

La commande ansible-playbook va jouer un scénario rédigé dans playbook.yml sur le serveur_cible défini dans mon_inventaire.yml. Le fichier variables.yml précisé permet de spécifier des valeurs particulières à appliquer lors de l’installation. 

Par exemple, cela peut être une règle de configuration dans le fichier pg_hba.conf de postgresql pour autoriser un serveur externe à consulter la base de données ou les versions des briques à installer comm tomcat, activemq, etc.

Démonstration

Dans cette démonstration nous utilisons Vagrant pour créer deux machines virtuelles Ubuntu 18.04.
L’objectif est de déployer sur ces machines deux environnements Alfresco via Ansible. Nous allons donc créer un inventaire pour Ansible une fois les machines virtuelles opérationnelles.

NB : notons qu’il existe un module de provisionning Ansible spécifique à Vagrant (https://www.vagrantup.com/docs/provisioning/ansible.html). Ce dernier est très pratique pour exécuter des playbooks dès l’initialisation de la machine virtuelle. Dans ce cas, c’est Vagrant qui va constituer lui-même son inventaire et faire appel à un playbook en fonction des informations inscrites dans son fichier de configuration Vagrantfile. Son utilisation peut être faite pour rendre le plus transparent possible le provisionning.

Dans le cadre de notre démonstration nous utilisons un fichier de variables qui s’appliquera à chaque instance. Il est évidemment possible d’appliquer des variables différentes par environnement mais cela se ferait dans le fichier d’inventaire. Aujourd’hui plus d’une centaine de variables sont disponibles pour personnaliser les déploiements.

Nous allons effectuer l’installation sur le groupe noeuds, ‘demonstration’ (cf inventaire) grâce à la commande suivante et son paramètre –limit :

Puisque les images valent mieux que des mots, nous vous invitons à vous relaxer durant quelques minutes devant la vidéo ci-dessous, qui résume une installation de deux environnements Alfresco, postgresql sous un environnement Ubuntu. 

Ainsi se concluent nos deux billets introductifs sur Ansible !