Avantages et fonctionnement d'Ansible

Dans ce chapitre, nous verrons les problèmes rencontrés avant l'utilisation Ansible, son utilisation et son fonctionnement

Pourquoi avons-nous besoin d'Ansible ?

Bien avant de vous expliquer ce qu'est Ansible, il est de la plus haute importance de comprendre les problèmes rencontrés avant l'utilisation Ansible. Prenons un petit retour en arrière sur le début de l'informatique lorsque le déploiement et la gestion des serveurs de manière fiable et efficace ont été un défi. Auparavant, les administrateurs système géraient les serveurs manuellement, installaient les logiciels, changeaient les configurations et administraient les services sur des serveurs individuels.

À mesure que les Datacenters se développaient et que les applications hébergées devenaient plus complexes, les administrateurs ont réalisé qu'ils ne pouvaient pas faire évoluer leur gestion manuelle des systèmes aussi rapidement que les applications qu'ils activaient. Cela a également entravé la vitesse du travail des développeurs car l'équipe de développement était agile et publiait fréquemment des logiciels, mais les opérations informatiques passaient plus de temps à configurer les systèmes. C'est pourquoi que des outils de provisionnement de serveur et de gestion de la configuration automatique ont prospéré. Une solution des solutions au problème mentionné ci-dessus est Ansible.

L'outil Ansible vise à fournir des gains de productivité importants à une grande variété de défis d'automatisation. Comme vu sur le chapitre précédent, c'est un outil qui se veut simple à l'utilisation mais suffisamment puissant pour automatiser des environnements d'applications complexes à plusieurs niveaux.

Avantages d'Ansible

Voici une liste des avantages d'Ansible :

  • Gratuit: Ansible est un outil open source.
  • Simple : Ansible utilise une syntaxe simple écrite en YAML. Aucune compétence en programmation particulière n'est nécessaire pour créer les playbooks d'Ansible. Il est également simple à installer.
  • Puissant: Ansible vous permet de modéliser des workflows très complexes.
  • Flexible: Ansible vous fournit des centaines de modules prêts à l'emploi pour gérer vos tâches, quel que soit l'endroit où ils sont déployés. Vous pouvez réutiliser le même playbook sur un parc de machines Red Hat, Ubuntu ou autres.
  • Agentless : vous n'avez pas besoin d'installer d'autres logiciels ou d'ouvrir des ports de pare-feu supplémentaires sur les systèmes clients que vous souhaitez automatiser. Ansible réduit encore l'effort requis pour que votre équipe commence à automatiser immédiatement.
  • Efficace: Parce que vous n'avez pas besoin d'installer de logiciel supplémentaire, il y a plus de place pour les ressources d'application sur votre serveur.

Que peut faire Ansible?

Ansible peut être utilisé de différentes manières. J'en ai mentionné quelques-unes ci-dessous:

Déploiement d'applications

Ansible vous permet de déployer rapidement et facilement des applications à plusieurs niveaux. Vous n'aurez pas besoin d'écrire du code personnalisé pour automatiser vos systèmes; vous listez les tâches à effectuer en écrivant un playbook, et Ansible trouvera comment amener vos systèmes à l'état dans lequel vous voulez qu'ils soient. En d'autres termes, vous n'aurez pas à configurer manuellement les applications sur chaque machine . Lorsque vous exécutez un playbook à partir de votre machine de contrôle, Ansible utilisera le protocole SSH pour communiquer avec les hôtes distants et exécuter toutes les tâches (Tasks).

Orchestration

Comme son nom l'indique, l'orchestration consiste à amener différentes éléments à interagir ensemble sans incohérence. Par exemple, avec le déploiement d'applications, vous devez gérer non seulement les services frontend, mais également les services backend comme les bases de données, le réseau, le stockage, etc... Vous devez également vous assurer que toutes les tâches sont gérées dans le bon ordre. Grâce à Ansible vous orchestrez les éléments de votre infrastructure à l'aide des playbooks Ansible, et vous pouvez les réutiliser sur différents types de machines, grâce à la portabilité des modules Ansible.

Conformité et sécurité

Comme pour le déploiement d'applications, des politiques de sécurité de votre entreprise (telles que des règles de pare-feu ou le verrouillage des utilisateurs) peuvent être mises en œuvre avec d'autres processus automatisés. Si vous configurez les détails de sécurité sur la machine de contrôle et exécutez le playbook associé, tous les hôtes distants seront automatiquement mis à jour avec ces détails. Cela signifie que vous n'aurez pas besoin de surveiller chaque machine pour vérifier la conformité de la sécurité en continu manuellement. De plus, tous les identifiants (identifiants et mots de passe des utilisateurs admin) qui sont stockés dans vos playbooks ne sont récupérables en brut par aucun utilisateur.

Provisionnement du cloud

La première étape de l'automatisation du cycle de vie de vos applications consiste à automatiser l'approvisionnement de votre infrastructure. Avec Ansible, vous pouvez provisionner des plateformes cloud, des hôtes virtualisés, des périphériques réseau et des serveurs physiques.

Comment fonctionne Ansible

Dans Ansible, il existe deux catégories d'ordinateurs: le nœud maître (master) et les nœuds esclaves (slaves). Le nœud maître est une machine sur laquelle est installé l'outil Ansible. Il doit y avoir au moins un nœud maître, bien qu'un nœud maître de sauvegarde puisse également exister.

Ansible fonctionne en se connectant à vos nœuds en SSH et en y poussant de petits programmes, appelés modules. Ces modules sont définis dans un fichier nommé le Playbook. Le nœud maître, se base sur un fichier d'inventaire qui fournit la liste des hôtes sur lesquels les modules Ansible doivent être exécutés.

Ansible exécute ces modules en SSH et les supprime une fois terminé. La seule condition requise pour cette interaction est que votre nœud maître Ansible dispose d'un accès de connexion aux nœuds esclaves. Les clés SSH sont le moyen le plus courant de fournir un accès, mais d'autres formes d'authentification sont également prises en charge.

Voici un schéma qui reprend notre explication :

How ansible works

Dans la prochaine partie, nous découvrirons comment configurer notre environnement d'Ansible.

Espace commentaire

Écrire un commentaire

Rejoignez la discussion

Vous devez être connecté pour poster un message.

32 commentaires

ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Pensez à bien checker vos logs en cas d'échec avec -vvv, ça donne tout le détail de la connexion SSH. Ça évite de tourner en rond pendant trois heures.

26/01/2020 à 08:01
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, il existe des modules communautaires pour l'API Proxmox. C'est très efficace pour automatiser tes VM.

26/01/2020 à 00:49
ssauvage
Membre Actif
Avatar de ssauvage
ssauvage
Membre Actif

Peut-on utiliser Ansible pour provisionner des instances sur Proxmox ?

25/01/2020 à 20:25
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Ansible ne charge pas ton .bashrc par défaut. Il faut explicitement sourcer tes fichiers ou définir tes variables dans la tâche.

25/01/2020 à 15:37
jclement
Membre Actif
Avatar de jclement
jclement
Membre Actif

J'ai un souci avec les variables d'environnement sur les hôtes distants, elles ne sont pas chargées quand je lance un script shell.

25/01/2020 à 10:19
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, utilise le paramètre -f (forks) dans ta commande de lancement. Augmente le nombre selon la puissance de ton nœud maître.

25/01/2020 à 03:56
sweiss
Membre Actif
Avatar de sweiss
sweiss
Membre Actif

Est-ce qu'Ansible gère le parallélisme pour le déploiement sur 50 serveurs ?

24/01/2020 à 22:36
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Une tâche s'exécute toujours. Un handler ne se déclenche que s'il est notifié par un changement (ex: redémarrer Nginx seulement si la conf a été modifiée).

24/01/2020 à 14:37
matthieu-leroux
Membre Actif
Avatar de matthieu-leroux
matthieu-leroux
Membre Actif

C'est quoi la différence entre un task et un handler ?

24/01/2020 à 07:36
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

La plupart oui, mais pour le cloud (AWS, Azure), il faut installer les collections via ansible-galaxy.

24/01/2020 à 00:13
teixeira-patricia
Membre Actif
Avatar de teixeira-patricia
teixeira-patricia
Membre Actif

Les modules sont-ils tous installés par défaut ?

23/01/2020 à 18:26
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Regarde dans ton ansible.cfg, augmente la valeur de timeout. Par défaut, c'est souvent trop court pour des liens capricieux.

23/01/2020 à 10:53
barthelemy-isabelle
Membre Actif
Avatar de barthelemy-isabelle
barthelemy-isabelle
Membre Actif

J'ai des timeout SSH sur des serveurs distants lents. Quel paramètre modifier ?

23/01/2020 à 05:14
ebesli
Membre
Avatar de ebesli
ebesli
Membre

Merci pour ce cours très clair et comprehensif pour un débutant comme moi.

23/01/2020 à 00:58
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Utilise --start-at-task pour reprendre à l'étape bloquante après avoir corrigé ton erreur.

22/01/2020 à 23:35
jsauvage
Membre Actif
Avatar de jsauvage
jsauvage
Membre Actif

Comment je peux déboguer une tâche qui échoue sans tout relancer ?

22/01/2020 à 17:15
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Utilise le flag --limit lors de ton lancement.

ansible-playbook site.yml --limit "serveur_cible"
22/01/2020 à 12:36
fabre-olivie
Membre Actif
Avatar de fabre-olivie
fabre-olivie
Membre Actif

Il est possible de limiter l'exécution d'un playbook à un seul hôte spécifique au lieu de tout le groupe ?

22/01/2020 à 07:17
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Utilise ansible-vault. Ça permet de chiffrer tes fichiers de variables sensibles. À ne jamais stocker en clair dans Git.

22/01/2020 à 01:34
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Bonjour @Gilles-Franklin, merci pour votre message :)

21/01/2020 à 22:33
martin-catherine
Membre Actif Secouriste
Avatar de martin-catherine
martin-catherine
Membre Actif Secouriste

La partie sur la sécurité est intéressante, mais comment on gère les secrets réellement sans les laisser traîner en clair ?

21/01/2020 à 21:07
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

YAML est ultra sensible aux espaces. Ne jamais utiliser de tabulations, uniquement des espaces. Passe ton fichier dans un linter.

21/01/2020 à 15:58
camille35
Membre Actif
Avatar de camille35
camille35
Membre Actif

J'ai une erreur bizarre lors de l'exécution d'un playbook : ERROR! Syntax Error while loading YAML. Pourtant mon indentation me semble correcte.

21/01/2020 à 09:33
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, les modules réseau sont très matures. Regarde la doc sur cisco.ios.ios_config. C'est bien plus propre que du script shell maison.

21/01/2020 à 05:24
etienne23
Membre Actif
Avatar de etienne23
etienne23
Membre Actif

Est-ce que je peux utiliser Ansible pour gérer la config réseau de mes switchs Cisco ?

20/01/2020 à 22:28

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire
An Error Occurred: Internal Server Error

Oops! An Error Occurred

The server returned a "500 Internal Server Error".

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.