Introduction
Bonjour les copains, prêt pour découvrir une nouvelle technologie ? Allons-y, let'go, c'est parti les amis !
C'est quoi déjà Ansible ?
Ansible est un moteur d'automatisation informatique open source, qui peut éliminer les corvées de votre vie professionnelle, et améliorer également considérablement l'évolutivité, la cohérence et la fiabilité de votre environnement informatique.
Vous pouvez utiliser Ansible pour automatiser trois types de tâches :
- Provisioning : configurer les différents serveurs dont vous avez besoin dans votre infrastructure (On a déjà eu l'occasion par exemple de l'utiliser avec Vagrant pour créer un cluster Kubernetes, article ).
- Configuration : modifier la configuration d'une application, d'un système d'exploitation ou d'un périphérique, démarrer et arrêter les services, installer ou mettre à jour des applications, mettre en œuvre une politique de sécurité, ou effectuer une grande variété d'autres tâches de configuration.
- Déploiement d'applications : adopter une démarche DevOps en automatisant le déploiement d'applications développées en interne sur vos environnements de production.
Bref, un vrai couteau suisse 😎 !
Objectif du cours
Dans ce cours nous allons apprendre à automatiser les tâches d'administration système répétitives sur un parc informatique On premise (local) ou Cloud à l'aide d'Ansible.
Histoire d'Ansible
Lorsque nous examinons l'histoire d'Ansible , il est facile de comprendre la motivation qui a poussé les inventeurs de l'outil, à créer ce système d'automatisation, atteignant aujourd'hui un seuil de maturité assez exceptionnel.
L'outil Ansible a été développé par Michael DeHaan (il n'est pas le seul bien sûr, il faut tout une armée d'informaticiens pour construire à tel outil, mais l'idée de base vient de lui), c'est aussi l'auteur de l'application de serveur de provisionnement Cobbler (l'un de ses premiers projets qu'il a commencé à Redhat). Red Hat était très intéressé par un outil de gestion de configurations, plus particulièrement après l'arrivée de Puppet et Chef dans le marché des outils d'automatisation.
Pendant ce temps, le mot DevOps a commencé à être beaucoup utilisé, et diverses discussions ont lieu sur les chaînes d'outils devops. Les discussions sont entièrement axées sur la culture mais surtout sur le fait de rendre les outils (souvent Open Source) plus faciles à utiliser, plutôt que d'acheter un outil universel à un grand fournisseur.
Auparavant Michael DeHaan travaillait pour Puppet en tant que chef de produit pendant un certain temps, ou il y a eu quelques divergences.. Pour lui la simplicité de l'outillage, aurait dû être plus prioritaire et la chose la plus importante dans un outillage d'automatisation.
Après avoir quitté Puppet et travaillé dans de nouveaux projets, il n'a pas réussi à convaincre les gens et ses nouveaux collègues à utiliser Puppet en tant qu'outillage d'automatisation principal. Il trouvait aussi que les utilisateurs n'étaient pas non plus en mesure d'adopter des pratiques d'automatisation de style DevOps en raison de la complexité des outils alternatifs à Puppet. Les scripts internes étaient considérés comme plus faciles, mais ce n'était pas plus fiable.
L'idée d'un outil d'automatisation simple a commencé à émerger. Ansible n'a pas vraiment commencé non plus, même si les idées se formaient rapidement. Finalement, c'était inévitable, En février 2012 Ansible a donc commencé en tant que projet. Il a décollé assez rapidement grâce à de nombreux administrateurs systèmes et développeurs travaillant d’arrache-pied sur le projet. Le but principal consistait à montrer au monde qu'il y avait un moyen plus simple d'automatisation.
Pari réussi, puisque l'entreprise Red Hat rachète Ansible en octobre 2015, Ansible tourne actuellement à plein régime, et le projet est pris en charge par une entreprise de bonne taille (Red Hat). Ansible est actuellement l'outil de gestion de configuration le plus étoilé et le plus forké sur GitHub.
Public visé
Ce tutoriel est conçu pour les débutants pour les aider à comprendre les bases Ansible à partir de zéro. Ce tutoriel vous donnera une compréhension suffisante de la technologie, qui vous permettra plus tard d’atteindre des niveaux d’expertise beaucoup plus élevés.
Prérequis
Avant de poursuivre ce cours, vous devez au minimum avoir une compréhension de base sur les commandes Linux, cela vous aidera mieux dans les tâches Ansible. et d’avancer rapidement sur la piste d’apprentissage, mais ce n'est pas non plus indispensable.
Êtes-vous prêt pour automatiser vos tâches ingrates ? C'est parti !
Espace commentaire
Écrire un commentaire
Rejoignez la discussion
Vous devez être connecté pour poster un message.
29 commentaires
D'ailleurs, si vous avez des erreurs de timeout, augmentez le
forksdans votre config pour paralléliser ou ajustez letimeoutglobal.Oui, avec le module
shelloucommand, mais abuse pas. L'objectif, c'est d'être déclaratif, pas de faire du script bash déguisé.On peut mixer du shell et de l'ansible ?
Content que ça fonctionne. Maintenant, essaie d'utiliser des
handlerspour redémarrer le service uniquement si la config change.J'ai réussi à automatiser le déploiement de nginx, c'est bluffant la rapidité.
Utilise
ansible-vault. Ça chiffre tes fichiers de variables.Comment on gère les secrets ? J'ai pas envie de mettre mes mots de passe en clair dans le git.
Oui, les modules network existent, mais c'est une autre paire de manches. Commence par Linux avant de toucher au matos réseau.
Quelqu'un a déjà utilisé ça pour du réseau ? Genre configurer des switchs ?
Merci pour l'article, c'est beaucoup plus clair que la doc officielle qui est un peu dense.
Force le chemin dans ton inventory ou dans ta config pour éviter qu'il cherche partout :
J'ai un warning sur le Python interpreter, je dois faire quoi ?
Oui, utilise
ansible-playbook --syntax-check ton_playbook.yaml. À faire avant chaque exécution pour éviter de casser la prod.Bonjour @malmier , bien sûr que non. Sinon aucun intérêt de rédiger cet article. Le but est pour le moment d'introduire le cours, je publierai au fil du temps la suite du cours.
Je vais sûrement coder un système de statue pour les cours afin de connaître l'état d'avancement de chaque nouveau cours.
Est-ce qu'il y a une commande pour tester la syntaxe sans exécuter le playbook ?
WSL2, c'est parfois capricieux avec SSH. Vérifie que ton service SSH tourne bien sur la target.
Ça fonctionne sur WSL2 ? J'ai des soucis de réseau avec mes VMs.
Carrément. Utilise des
rolespour structurer ton code. Ça évite de finir avec un énorme fichier yaml illisible.L'article mentionne le provisioning, mais on peut gérer des gros parcs avec ça ?
ca s'arrête au prérequis ?
Vérifie ton fichier
ansible.cfg. Tu dois définir l'utilisateur distant ou utiliser--becomepour passer root.J'ai une erreur de permission refusée quand je lance mon premier
ansible all -m ping. Une idée ?Exact. Avec Ansible, tu n'as besoin que d'un accès SSH avec clé publique sur tes cibles. Pas d'agent à maintenir.
Puppet demande un agent sur chaque node, Ansible est en agentless via SSH. C'est là que tu gagnes en simplicité.
Question bête : c'est quoi la différence réelle avec Puppet ? L'article parle de complexité, mais techniquement ?