AXOPEN_Blog_Ansible.jpg
logo Axopen

18+

années
d'expérience

60+

experts
techniques

150K

écoutes de notre podcast

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

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…

Camille.jpg
Camille REGNAULT, L'animatrice du podcast ITlogo Linkedin
Animatrice du podcast AXOPEN, j'accompagne les entreprises dans leur transformation digitale depuis près de 10 ans. Mis à jour le 24 Janv 2024

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 (PostgreSQLMoteur de gestion de base de données libre de droit., MySQLMoteur de gestion de base de données., 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/CDProcessus d'automatisation : Intégration Continue et Déploiement Continu, 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 APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. 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é !

Pour aller plus loin

DevOps : comment se lancer ? Nos conseils de développeurs !

Le DevOps, c’est quoi et comment se lancer ? On vous donne notre définition du DevOps, nos outils préférés et nos conseils pour réussir un projet en DevOps

Small right arrow

La gestion des risques dans les projets informatiques

Dans le domaine IT, la gestion des risques est un facteur clé pour la réussite des projets. Complexes par nature, ces projets sont souvent soumis à de nombreuses incertitudes, qu'elles soient techniques, budgétaires, humaines, ou liées à d’autres facteurs externes. De plus, dans un contexte de transformation digitale, de nouveaux types de risques apparaissent. Les entreprises doivent non seulement gérer les risques techniques, mais aussi ceux liés à l'adoption de nouvelles technologies. La résistance au changement, la formation insuffisante des équipes, ou encore les erreurs dans la migration des systèmes sont autant de facteurs qui peuvent freiner le succès de la transformation. Anticiper et atténuer ces risques est essentiel pour garantir une transition fluide et la réussite des projets informatiques !

Small right arrow

Flutter : pourquoi choisir ce framework pour vos applications métiers ?

Dans l'univers du développement mobile et multi-plateforme, difficile de passer à côté de Flutter. Ce framework signé Google a rapidement gagné en popularité grâce à sa flexibilité, ses performances et surtout son expérience de développement ultra-fluide. Vous cherchez une solution moderne pour créer des applications performantes sur plusieurs plateformes, sans multiplier les bases de code ? Flutter pourrait bien être votre meilleur allié.

Small right arrow