Ansible + Jenkins : Le combot qui déboite !

AnsibleLogo_transparent_web

Ansible est un outil de déploiement et de gestion de configuration super efficace, et surtout super simple à utiliser !

En effet, il se base sur des fichiers de configuration en YAML, et donc facilement lisible par un être humain.

Le principe d’Ansible est de lancer des « playbooks » qui vont alors lancer des tâches sur un ensemble de serveurs dans l’ordre où elles ont été écrites.

Par exemple, on peut avoir un playbook apache.yml qui va installer et configurer apache sur tous les serveurs du groupe « apache » définis dans le fichier d’inventaire ansible.

Ansible utilise pour cela des « rôles » qui définissent un ensemble de tâches, par exemple :

  • installer le package (apt-get / yum install)
  • Copie le fichier de configuration à tel endroit
  • Relance le service en cas de modification du fichier de conf, etc…

Il suffit alors de lancer la commande :

ansible-playbook apache.yml

et Ansible va se connecter en ssh sur tous les serveurs correpondant, et effecter les tâches si c’est nécessaire..

Bien sur il est important de versionner ces fichiers de configuration ansible dans un gestionnaire de source (GIT / SVN / Mercurial).

 

687474703a2f2f6a656e6b696e732d63692e6f72672f73697465732f64656661756c742f66696c65732f6a656e6b696e735f6c6f676f2e706e67

A partir de là, pourquoi ne pas utiliser un outil d’intégration continue comme Jenkins pour automatiser tout ça ?

Il suffit alors de créer un job jenkins paramétrable, qui va récupérer la configuration ansible depuis le repository puis lancer le playbook correspondant.

Une fois les Jobs Jenkins bien paramétrés, et la conf ansible préparée, on obtient alors une interface web simple qui permet à n’importe qui de lancer le déploiement d’application en ayant simplement à fournir un fichier d’inventaire et quelques variables de paramétrage.