Introduction au cours complet sur Ansible

Introduction au cours complet pour débutants afin d'apprendre pas à pas les différents concepts de l'outil d'automatisation Ansible.

Introduction

Bonjour les copains, prêt pour découvrir une nouvelle technologie ? Allons-y, let'go, c'est parti les amis !

Exicité pour apprendre le nouveau Ansible

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

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

D'ailleurs, si vous avez des erreurs de timeout, augmentez le forks dans votre config pour paralléliser ou ajustez le timeout global.

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

Oui, avec le module shell ou command, mais abuse pas. L'objectif, c'est d'être déclaratif, pas de faire du script bash déguisé.

22/01/2020 à 11:27
michelle-lebrun
Membre Actif
Avatar de michelle-lebrun
michelle-lebrun
Membre Actif

On peut mixer du shell et de l'ansible ?

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

Content que ça fonctionne. Maintenant, essaie d'utiliser des handlers pour redémarrer le service uniquement si la config change.

22/01/2020 à 01:17
cecile-perez
Membre Actif
Avatar de cecile-perez
cecile-perez
Membre Actif

J'ai réussi à automatiser le déploiement de nginx, c'est bluffant la rapidité.

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

Utilise ansible-vault. Ça chiffre tes fichiers de variables.

ansible-vault encrypt secrets.yaml
21/01/2020 à 11:25
tristan-marin
Membre Actif
Avatar de tristan-marin
tristan-marin
Membre Actif

Comment on gère les secrets ? J'ai pas envie de mettre mes mots de passe en clair dans le git.

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

Oui, les modules network existent, mais c'est une autre paire de manches. Commence par Linux avant de toucher au matos réseau.

21/01/2020 à 01:50
boulay-jeanne
Membre Actif
Avatar de boulay-jeanne
boulay-jeanne
Membre Actif

Quelqu'un a déjà utilisé ça pour du réseau ? Genre configurer des switchs ?

20/01/2020 à 19:11
imorin
Membre Actif
Avatar de imorin
imorin
Membre Actif

Merci pour l'article, c'est beaucoup plus clair que la doc officielle qui est un peu dense.

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

Force le chemin dans ton inventory ou dans ta config pour éviter qu'il cherche partout :

[all:vars]
ansible_python_interpreter=/usr/bin/python3
20/01/2020 à 06:41
lenoir-etienne
Membre Actif
Avatar de lenoir-etienne
lenoir-etienne
Membre Actif

J'ai un warning sur le Python interpreter, je dois faire quoi ?

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

Oui, utilise ansible-playbook --syntax-check ton_playbook.yaml. À faire avant chaque exécution pour éviter de casser la prod.

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

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.

19/01/2020 à 20:46
alexandre29
Membre Actif
Avatar de alexandre29
alexandre29
Membre Actif

Est-ce qu'il y a une commande pour tester la syntaxe sans exécuter le playbook ?

19/01/2020 à 15:29
avalette
Membre Actif
Avatar de avalette
avalette
Membre Actif

WSL2, c'est parfois capricieux avec SSH. Vérifie que ton service SSH tourne bien sur la target.

19/01/2020 à 11:04
rocher-alexandre
Membre Actif
Avatar de rocher-alexandre
rocher-alexandre
Membre Actif

Ça fonctionne sur WSL2 ? J'ai des soucis de réseau avec mes VMs.

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

Carrément. Utilise des roles pour structurer ton code. Ça évite de finir avec un énorme fichier yaml illisible.

18/01/2020 à 22:49
vaillant-anais
Membre Actif
Avatar de vaillant-anais
vaillant-anais
Membre Actif

L'article mentionne le provisioning, mais on peut gérer des gros parcs avec ça ?

18/01/2020 à 15:38
malmier
Membre
Avatar de malmier
malmier
Membre

ca s'arrête au prérequis ?

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

Vérifie ton fichier ansible.cfg. Tu dois définir l'utilisateur distant ou utiliser --become pour passer root.

[defaults]
remote_user = root
host_key_checking = False
18/01/2020 à 07:57
barbier-xavier
Membre Actif Rédacteur
Avatar de barbier-xavier
barbier-xavier
Membre Actif Rédacteur

J'ai une erreur de permission refusée quand je lance mon premier ansible all -m ping. Une idée ?

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

Exact. Avec Ansible, tu n'as besoin que d'un accès SSH avec clé publique sur tes cibles. Pas d'agent à maintenir.

17/01/2020 à 20:25
hmeunier
Membre Actif
Avatar de hmeunier
hmeunier
Membre Actif

Puppet demande un agent sur chaque node, Ansible est en agentless via SSH. C'est là que tu gagnes en simplicité.

17/01/2020 à 12:59
qrey
Membre Actif
Avatar de qrey
qrey
Membre Actif

Question bête : c'est quoi la différence réelle avec Puppet ? L'article parle de complexité, mais techniquement ?

17/01/2020 à 07:20

Rejoindre la communauté

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

S'inscrire