Dans cet article


Offres d'emploi

Tags

Ansible : notre plateforme préférée pour le déploiement automatisé !

Ansible : notre plateforme préférée pour le déploiement automatisé !

Vous gérez plusieurs serveurs et en avez marre de perdre du temps dans des tâches répétitives ? Ansible devrait vous plaire !

Ansible, c'est quoi ?

Ansible est une solution qui permet de faire principalement du déploiement automatisé et de la configuration automatisée. Ansible tourne avec Python, Powershell et Ruby et sert à automatiser la gestion des serveurs… Génial, non ?

A quelle problématique répond Ansible ?

Dans une infrastructure avec des dizaines et des dizaines de serveurs (pas nécessairement reliés entre eux), les serveurs sont souvent similaires. On retrouve bien souvent un serveur http (nginx, apache,…) et une base de données (PostgreSQL, MySQL, MariaDB,…). Tout serveur a donc une « base » commune.

Malgré le fait que tous les serveurs aient une base commune, il faudra se connecter à la main à chacune de ces VM pour y effectuer des actions. Ce qui est assez long, ennuyeux et peut surtout être source d'erreurs !

Ansible a justement été créé pour automatiser ces tâches et vous faire gagner du temps !

Ansible, comment ça marche ?

Installation

Ansible s'installe sur un serveur simplement avec la commande « apt install ansible ». A l'intérieur d'Ansible, il existe plusieurs méthodes. De notre côté, on préconise d'avoir à côté un serveur git, pour versionner vos scripts de déploiement automatisé.

Ansible, ce n'est ni plus ni moins qu'une commande qu'on lance, qui a en paramètres l'ensemble des serveurs. Tous ces serveurs sont joignables normalement en SSH (sauf pour Windows).

Fichier répertoriant les serveurs

L'étape la plus longue du process se situe ici ! Il faut constituer à la main un fichier répertoriant vos différents serveurs. On doit :

  • Répertorier les IP
  • Répertorier les méthodes de connexion (avec identifiants et mots de passe ou clé SSH),
  • Etc.

Une fois le fichier créé, on le pousse à Ansible.

Généralement, (comme on adore avoir une seule source de données) on met ce fichier également dans notre Git pour suivre au fur et à mesure les ajouts et suppressions des serveurs._

Ecriture des scripts

Vous n'avez ensuite plus qu'à écrire les scripts que vous souhaitez exécuter en YAML, et à les transmettre à Ansible. Exemple : installer un Apache sur une grappe de serveurs, etc.

  • name: Check if apache2 is installed

command: dpkg-query -W apache2

register: package\_check\_deb

failed\_when: package\_check\_deb.rc \> 1

changed\_when: package\_check\_deb.rc == 1

  • name: Download apache2

get_url:

url={{ package\_url }};

dest=/tmp/apache2

when: package_check_deb.rc == 1

  • name: Install apache2

apt: deb=/tmp/apache2

sudo: true

when: package\_check\_deb.rc == 1

On lance la procédure, puis tout se fait tout seul et ensuite, Ansible nous affiche les résultats.

ansible-playbook servers-group install_apache2.yml

« servers-group » étant soit :

  • Le nom du serveur
  • Le nom du groupe de serveur
  • Ou « all » pour l'ensemble de vos serveurs.

La remontée d'informations chez Ansible

A chaque script exécuté, Ansible remonte des informations :

  • Chaque exécution de scripts sur chaque serveur
  • Est-ce que ça s'est bien passé ?
  • Est-ce que c'était utile ou non ?
  • Préconisations : il vous donne des conseils ( ex : mettre à jour de Python) que vous pouvez appliquer ou non.

Ansible et le CI/CD

Pour faire du CI/CD, on conseille de coupler Ansible avec des outils comme Jenkins ou Gitlab. Cela vous permettra de pouvoir piloter simplement les serveurs via des interfaces ! Et depuis peu, pour ceux qui veulent rester chez Ansible, vous pouvez utiliser Ansible Tower (qui expose en API Rest, les jobs Ansible).

Les points forts d'Ansible

Ansible dispose de plein de points forts :

  • Ça permet de gagner du temps : c'est bien plus rapide qu'à la main !
  • On peut paralléliser les déploiements/traitements : on peut par exemple publier 4 jobs en parallèle ! Ce qui fait gagner encore beaucoup de temps !
  • On évite les erreurs !
  • Communauté grande et active : on a la chance d'avoir une grande communauté active qui développe presque tous les jours des plugins pour nous aider dans nos développements (exemple d'un plugin qui nous a bien servi : plugin de compatibilité avec VMWare… merci à son auteur !)

Les points faibles d'Ansible :

  • Il faut une VM « puissante » , notamment si vous voulez faire tourner plusieurs process en parallèle.
  • Par défaut, Ansible affiche les mots de passe en clair… Par soucis de sécurité, il faut donc penser à installer de quoi crypter/ décrypter les mots de passe.

J'allais oublier, il faut savoir se servir de Linux et/ou Windows en fonction de votre infrastructure.

Alors Ansible, on adopte ?

C'est un grand OUI ! Pour l'avoir testé sur plusieurs projets, Ansible est juste génial ! Pour exemple, nous avions un build qui durait initialement plus d'une heure. En parallélisant les différents scripts avec Ansible, on a réussi à le faire descendre à moins de 30 minutes.

De plus, il n'y a pas de difficulté particulière pour installer et configurer Ansible, la seule difficulté est finalement de bien faire ses scripts.

Pour plus d'informations sur Ansible, je vous suggère d'aller voir la documentation Ansible et de demander conseil à la super communauté !

L'équipe AXOPEN

Voir aussi les articles suivants

L’intégration continue : qu’est-ce que c’est ?

L’intégration continue : qu’est-ce que c’est ?

Le 18/07/2019 par Camille REGNAULT

Si vous faites des projets informatiques ou que vous êtes simplement passionné, vous avez probablement déjà rencontré la notion « d’intégration continue » ou de « continuous integration ». Process souvent utilisé lors du développement de nos projets, on vous propose un tour d’horizon du sujet avec un de nos experts Gitlab. L’intégration continue, c’est quoi ? L’intégration continue (ou continuous integration) a pour but de mettre en place un processus de publication automatisé et simplifié, qui permet une livraison plus rapide d’un logiciel aux utilisateurs finaux.
Lire l'article

L’intégration continue : qu’est-ce que c’est ?

L’intégration continue : qu’est-ce que c’est ?

Le 18/07/2019 par Camille REGNAULT

Si vous faites des projets informatiques ou que vous êtes simplement passionné, vous avez probablement déjà rencontré la notion « d’intégration continue » ou de « continuous integration ». Process souvent utilisé lors du développement de nos projets, on vous propose un tour d’horizon du sujet avec un de nos experts Gitlab. L’intégration continue, c’est quoi ? L’intégration continue (ou continuous integration) a pour but de mettre en place un processus de publication automatisé et simplifié, qui permet une livraison plus rapide d’un logiciel aux utilisateurs finaux.
Lire l'article

Mettre en place l’intégration continue : retour d’expériences !
Vous démarrez un projet d’application et voulez mettre en place un outil d’intégration continue pour votre projet ? On vous partage nos conseils et notre retour d’expérience sur le sujet ! Les pré-requis pour la mise en place de l’intégration continue Quel que soit l’outil d’intégration continue choisi (Gitlab, Jenkins, ….), les pré-requis sont identiques 🙂 Si votre code c’est du JS (Angular, React, etc.), les phases de compilation ne vous concernent pas.
Lire l'article