Accueil Entreprise Qu'est-ce qu'Ansible?

Qu'est-ce qu'Ansible?

by Auteur invité

Ansible est un outil d'automatisation sans agent écrit en Python. Il se connecte à vos clients via SSH et vous permet d'automatiser les tâches ennuyeuses et répétitives que vous ne voulez pas faire. Il vous permet de prendre une tâche effectuée par un humain qui peut prendre une heure et de la convertir en une seule commande qui se termine en quelques minutes. Cela améliore vos performances et vous permet de commencer à travailler sur le prochain grand projet.


Ansible est un outil d'automatisation sans agent écrit en Python. Il se connecte à vos clients via SSH et vous permet d'automatiser les tâches ennuyeuses et répétitives que vous ne voulez pas faire. Il vous permet de prendre une tâche effectuée par un humain qui peut prendre une heure et de la convertir en une seule commande qui se termine en quelques minutes. Cela améliore vos performances et vous permet de commencer à travailler sur le prochain grand projet.

Avantages ansibles

Ansible offre de nombreux avantages, prenons le temps d'examiner certains des plus importants. Je vais le décomposer en sections, une pour ceux qui n'ont pas ou peu d'automatisation, et une autre pour ceux qui utilisent déjà un outil d'automatisation comme Salt ou Puppet.

Nouveau dans l'automatisation

Si vous débutez dans l'automatisation, l'utilisation d'un outil simple peut vous aider dans la courbe d'apprentissage. Examinons quelques raisons pour lesquelles vous devriez choisir Ansible plutôt que les autres outils disponibles.

1. Syntaxe simple

En raison de la manière simple dont Ansible définit les tâches, il est très simple de commencer. Prenez l'extrait ci-dessous par exemple :

-

– hôtes : tous

 Tâches:

  – nom : Installer Nginx

   Miam:

     nom : nginx

     état : le plus récent

Une tâche Ansible complète, équivalente à l'exécution de "yum install nginx" sur tous vos hôtes.

Vous pouvez probablement déjà dire ce qu'il fait. Il installe la dernière version du Nginx serveur Web open-source sur tous vos hôtes définis. Nous examinerons la définition des hôtes plus tard. Étant donné que toutes les tâches que vous créez sont en YAML, elles sont à la fois faciles à lire et faciles à créer. Ceci est essentiel lorsque vous commencez à apprendre un nouvel outil, car cela vous permet d'acquérir rapidement de l'expérience tout en renforçant la confiance et la compréhension.

2. Git amour

Étant donné que vos automatisations sont de simples fichiers texte, il est possible de les stocker dans Git (ou un autre système de référentiel source), où elles contrôlent les modifications et peuvent être extraites et mises à jour à partir d'une source centrale.

3. Ordre d'exécution simple

Puisque les tâches sont exécutées dans l'ordre que vous définissez, vous n'avez pas à vous soucier de l'ordre d'exécution. Définissez simplement les étapes comme vous le feriez pour un humain, et Ansible les exécutera exactement dans cet ordre à chaque fois, sans avoir à vous soucier de manquer une étape.

4. Sans agent

Avoir un moyen sans agent de gérer vos hôtes est important, d'autant plus si vous ne disposez pas déjà d'un moyen de déployer un agent de manière automatisée. Essayer de démarrer une poussée d'automatisation dans un environnement existant peut être un cauchemar, surtout s'il y a des dizaines ou des centaines de machines qui ont besoin du nouvel agent.

Passionné d'automatisation

Si vous avez déjà fait de l'automatisation, peut-être en utilisant Bash, Python ou Powershell, vous vous demandez peut-être ce qu'Ansible apporte à la table. Nous allons jeter un coup d'oeil.

1. Orchestration simplifiée

Avez-vous déjà essayé de mettre à jour un site Web à l'aide d'un script bash ? Supposons que vous disposiez d'un équilibreur de charge Web ou d'un proxy inverse, de 5 serveurs Web, d'un équilibreur de charge de base de données et de 2 serveurs de base de données. Vous pourriez passer des centaines de lignes à simplement vérifier que chaque composant a été mis à jour avec succès.

Avec Ansible, vous pouvez définir des vérifications de l'état, des mises à niveau progressives et configurer vos équilibreurs de charge pour supprimer les nœuds d'ajout et de suppression à chaque étape de la mise à niveau. Vous pouvez en voir un exemple dans la documentation officielle de la livraison continue et des mises à niveau continues.

2. Idempotence

L'idempotence est la propriété de certaines opérations en mathématiques et en informatique par laquelle elles peuvent être appliquées plusieurs fois sans modifier le résultat au-delà de l'application initiale.- Wikipedia Fondamentalement, l'objectif est d'exécuter votre playbook une fois pour définir les choses comme vous le souhaitez, puis de continuer à l'exécuter. toutes les *X* heures/jours/semaines pour s'assurer que rien n'a changé. Si quelque chose change, vous devriez rechercher la source de *Configuration Drift* dans votre environnement.

Configuration Driftis où les serveurs dans l'infrastructure deviennent de plus en plus différents au fil du temps.- Shadow Soft

3. Stockage de secrets intégré

Le stockage de secrets intégré d'Ansible, appelé Ansible Vault, vous permet de stocker des données sensibles telles que des mots de passe, des clés API ou même des clés privées de manière sécurisée, avec le reste de votre base de code, dans le contrôle de code source. C'est du jamais vu dans Bash ou Python, nécessitant généralement des outils tiers comme un coffre-fort de mots de passe activé par l'API.

4. Extensibilité

Ansible peut être étendu facilement pour les modules Windows et Linux, ainsi que pour communiquer avec des outils tiers. Cela signifie que si vous souhaitez automatiser quelque chose, il y a probablement déjà un module communautaire que vous pouvez utiliser, ou vous pouvez créer ou adapter un module existant afin de répondre à vos besoins.

Vous pouvez trouver des informations sur le développement de vos propres modules avec la documentation officielle, ou vous pouvez consulter les modules de la communauté Ansible Galaxyfor.

Premiers pas avec Ansible

Installation Ansible

La mise en route est aussi simple que d'installer Ansible sur votre poste de travail ou votre serveur. Je vais montrer les commandes RedHat/CentOS, mais vous pouvez voir d'autres étapes d'installation dans la documentation officielle.

`sudo miam installer ansible`

C'est ça! Vous avez installé un nœud de contrôle Ansible entièrement fonctionnel et êtes prêt à partir.

Inventaire

Ansible a besoin de savoir à quelles machines parler et contre lesquelles exécuter vos playbooks. Regardons donc la mise en place d'un inventaire de base. Le fichier d'inventaire par défaut est disponible dans `/etc/ansible/hosts` sous Linux. Si vous jetez un coup d'œil à ce fichier, vous verrez qu'il est dans un format de type INI, et ressemble probablement à ceci :

Mail.example.com

[serveurs Web]

foo.exemple.com

bar.exemple.com

[serveurs de base de données]

un.exemple.com

deux.exemple.com

trois.exemple.com

Comme expliqué dans la documentation, les titres entre parenthèses sont des noms de groupe, qui vous permettent de classer les systèmes en groupes arbitraires. Je vous recommande de prendre un peu de temps et de configurer votre fichier d'inventaire, car il est important pour Ansible de savoir sur quels hôtes vous souhaitez exécuter des tâches.

Création d'un livre de jeu

Un playbook est une collection de tâches qui doivent être exécutées sur vos hôtes. Vous pouvez créer un playbook aussi simple qu'un seul fichier avec une seule lecture, ou plusieurs fichiers avec plusieurs conditions et des importations à partir d'autres playbooks. Nous allons commencer avec un simple playbook qui installe, démarre et ajoute des règles de pare-feu pour nginx sur nos serveurs Web. Dans notre fichier hosts, nous pourrions avoir quelque chose comme ceci :

[serveurs Web]

web01.exemple.com

web02.exemple.com

et dans notre fichier `nginx-install.yaml`, nous avons ce qui suit :

-

– hôtes : serveurs web

 Tâches:

  – nom : Installer Nginx

   Miam:

     nom : nginx

     état : le plus récent

  – nom : Démarrer Nginx

   service:

     nom : nginx

     état : commencé

  – nom : Autoriser le port 80 via le pare-feu

   pare-feu :

     port : 80/tcp # Alternativement, vous pouvez utiliser la syntaxe "service : http"

     permanente : oui

     état : activé

Présentation de l'hôte Ansible se connectant à vos serveurs Web et installant NGINX. Pour exécuter ce playbook, exécutez simplement `ansible-playbook nginx-install.yaml` et Ansible ira installer Nginx sur tous les hôtes de votre groupe de serveurs Web. Il s'agit d'un playbook simple avec un seul jeu, cependant, c'est un bon exemple de la facilité avec laquelle Ansible peut être utilisé dans votre environnement.

Conclusion

Comme vous pouvez le voir, Ansible est un outil d'automatisation très flexible et facile à utiliser qui peut fonctionner dans n'importe quel environnement. Avec sa courbe d'apprentissage facile et sa capacité à évoluer en fonction de vos besoins, Ansible est l'un des meilleurs outils d'automatisation pour le déploiement d'infrastructures dans un environnement entièrement géré par DevOps.

-Justin Gauthier

@ justinsane454