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 :
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
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.Oui, il existe des modules communautaires pour l'API Proxmox. C'est très efficace pour automatiser tes VM.
Peut-on utiliser Ansible pour provisionner des instances sur Proxmox ?
Ansible ne charge pas ton
.bashrcpar défaut. Il faut explicitement sourcer tes fichiers ou définir tes variables dans la tâche.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.
Oui, utilise le paramètre
-f(forks) dans ta commande de lancement. Augmente le nombre selon la puissance de ton nœud maître.Est-ce qu'Ansible gère le parallélisme pour le déploiement sur 50 serveurs ?
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).
C'est quoi la différence entre un
tasket unhandler?La plupart oui, mais pour le cloud (AWS, Azure), il faut installer les collections via
ansible-galaxy.Les modules sont-ils tous installés par défaut ?
Regarde dans ton
ansible.cfg, augmente la valeur detimeout. Par défaut, c'est souvent trop court pour des liens capricieux.J'ai des timeout SSH sur des serveurs distants lents. Quel paramètre modifier ?
Merci pour ce cours très clair et comprehensif pour un débutant comme moi.
Utilise
--start-at-taskpour reprendre à l'étape bloquante après avoir corrigé ton erreur.Comment je peux déboguer une tâche qui échoue sans tout relancer ?
Utilise le flag
--limitlors de ton lancement.Il est possible de limiter l'exécution d'un playbook à un seul hôte spécifique au lieu de tout le groupe ?
Utilise
ansible-vault. Ça permet de chiffrer tes fichiers de variables sensibles. À ne jamais stocker en clair dans Git.Bonjour @Gilles-Franklin, merci pour votre message :)
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 ?
YAML est ultra sensible aux espaces. Ne jamais utiliser de tabulations, uniquement des espaces. Passe ton fichier dans un linter.
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.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.Est-ce que je peux utiliser Ansible pour gérer la config réseau de mes switchs Cisco ?