GNU/Linux >> Tutoriels Linux >  >> Linux

Vous avez l'automatisation ? Voici un guide rapide pour vous familiariser avec Ansible

Ansible est un outil d'automatisation open source que les administrateurs système utilisent pour automatiser la configuration de l'infrastructure, le déploiement des applications et la gestion de la configuration. Il est sans agent, ce qui signifie qu'il ne nécessite l'installation d'aucun logiciel sur les hôtes, contrairement à certains autres outils d'automatisation, pour effectuer les tâches nécessaires. Au lieu de cela, il utilise SSH, si le système cible est basé sur Linux, WinRM si le système cible est basé sur Windows, ou une API si le système cible expose une API.

Il utilise un langage de programmation déclaratif pour définir la configuration cible souhaitée. Cependant, il ne déclare pas comment la configuration doit être accomplie. Par exemple, pour créer une nouvelle machine virtuelle, vous devez définir les spécifications de la machine virtuelle cible et comment elle doit être déployée. Le moteur Ansible, à l'aide du module approprié, exécute alors la tâche nécessaire.

L'automatisation dans le monde informatique

L'automatisation dans le monde informatique est nécessaire pour éviter de faire des actions répétitives manuellement et pour accélérer le cycle de déploiement. Ansible est destiné à répondre à ces besoins. Voici quelques exemples de la façon dont Ansible peut être un élément essentiel de votre infrastructure informatique :

Infrastructure en tant que code

  • La création de nouvelles machines virtuelles peut se faire de plusieurs manières. Cependant, après avoir démarré une nouvelle machine virtuelle, vous devez toujours installer des packages logiciels, des applications, etc. supplémentaires jusqu'à ce que le nouveau système soit fonctionnel. Avec Ansible, vous pouvez automatiser l'intégralité de ce processus, de la création d'une nouvelle machine virtuelle à la configuration de l'application.
  • Si vous disposez d'un environnement cloud en constante évolution, vous pouvez associer de nouvelles ressources de calcul à votre cloud à l'aide de différents outils cloud natifs. Néanmoins, vous devez d'abord préparer le matériel avant de le connecter (c'est-à-dire créer des configurations RAID pour les disques locaux, ajouter des VLAN à son profil, etc.). Ansible peut être l'outil principal pour préparer votre matériel et le connecter à votre cloud à l'aide d'API cloud natives.

Automatisation des applications

  • Supposons que vous ayez une application qui nécessite des mises à jour régulières. Par exemple, l'ajout de nouvelles entrées dans une base de données peut être effectué de plusieurs manières. Si votre application est dispersée sur des serveurs spécifiques, au lieu de créer différents scripts pour différents systèmes, vous pouvez créer un playbook Ansible contenant un ou plusieurs jeux pour automatiser et orchestrer cette action de A à Z.

[ Vous aimerez peut-être également lire : Présentation du nouveau hub d'automatisation Ansible ]

Modules Ansibles

Les modules Ansible prennent les instructions pour effectuer les tâches. L'un des points les plus vitaux d'Ansible est sa vaste communauté, qui crée régulièrement de nouveaux modules. Ces modules sont généralement codés en Python. L'installation initiale est toujours livrée avec des modules préinstallés. Cependant, vous pouvez installer des modules supplémentaires à partir d'Internet. Vous pouvez obtenir plus d'informations sur chaque module (c'est-à-dire, que fait ce module, comment l'utiliser, des exemples, etc.) de deux manières :

En ligne :En recherchant la documentation Ansible.

Lors de la recherche, vous devez vous assurer de choisir la version Ansible appropriée dans la liste déroulante dans le coin supérieur gauche de la page.

Hors ligne :Utilisation du ansible-doc commande depuis la ligne de commande.

$ ansible-doc file

Ici, vous cherchez comment utiliser un module appelé file . La riche sélection de modules d'Ansible est en fait une épée à double tranchant, où elle a ses avantages et ses inconvénients.

Avantages :

  1. Vous pouvez trouver un module pour presque toutes les tâches que vous souhaitez effectuer.
  2. Vous disposez d'une énorme communauté pour vous aider si nécessaire.

Inconvénients :

  1. Avec autant de modules, vous pouvez rapidement vous perdre sur ceux à utiliser. C'est pourquoi, lorsque vous envisagez d'utiliser Ansible pour automatiser des tâches spécifiques, vous devez créer une stratégie pour déterminer les modules à utiliser et les tester.
  2. Vous trouverez de nombreux modules communautaires que personne ne prend plus en charge ou qui sont obsolètes avec les nouvelles versions d'Ansible. Assurez-vous d'effectuer soigneusement chaque nouvelle mise à niveau d'Ansible. Effectuez également suffisamment de tests avant de déplacer le module vers votre environnement de production avant de risquer votre chaîne d'automatisation. Le choix des modules à utiliser et l'élaboration d'une stratégie d'automatisation est une tâche que vous effectuerez au fil du temps.

Ansible et Python

Ansible est fortement dépendant de Python. La plupart des modules sont codés avec Python. En outre, Python doit être installé sur le système Linux cible pour commencer à automatiser les tâches à l'aide d'Ansible. Bien qu'Ansible dépende fortement de Python, une connaissance approfondie de Python n'est pas requise. Cependant, savoir utiliser pip pour gérer les packages Python (installation, mise à jour, etc.) et la création d'environnements virtuels Python est recommandée.

Avertissements :

  1. La modification des versions de Python ou de l'un des packages préinstallés sur le système Ansible Engine est une action risquée qui peut rompre votre chaîne d'automatisation.
  2. Si vous utilisez le moteur Ansible pris en charge par Red Hat, Red Hat vous aidera à créer votre environnement virtuel Python si vous le souhaitez, mais le contenu de l'environnement virtuel n'est pas pris en charge.

Moteur Ansible contre tour Ansible

Ansible est destiné à être utilisé par différentes équipes DevOps. Ansible Tower permet à de nombreuses équipes d'exécuter des tâches d'automatisation à partir d'un emplacement centralisé qui permet le RBAC, la journalisation des tâches exécutées, une interface graphique pour exécuter des tâches et bien d'autres fonctionnalités. Avoir un système d'automatisation centralisé pour une énorme chaîne d'automatisation simplifiera vos tâches de maintenance. Pour une petite chaîne d'automatisation Ansible, Ansible Engine peut être utilisé, qui est un nœud basé sur Linux avec des binaires Ansible installés. Dans cette configuration, vous manquerez RBAC et l'interface graphique. Cependant, Ansible Engine fournit l'environnement nécessaire pour exécuter les tâches d'automatisation pertinentes.

Quelle approche Ansible ?

Ad hoc

Ad-hoc est un moyen d'envoyer une seule tâche Ansible au(x) système(s) cible(s). Vous pouvez le voir en exécutant une commande sur un système distant à l'aide de SSH ou de rsh hérité. Avec Ansible ad hoc, vous exécutez une tâche plus sophistiquée plutôt qu'une seule commande uniquement parce que vous utilisez un module Ansible, qui exécute plusieurs commandes.

Lectures

Les lectures Ansible sont des collections de différents fichiers au format YAML, qui s'exécuteront sur un ou plusieurs systèmes cibles. Ces jeux sont écrits dans un fichier appelé playbook .

Quel type utiliser ?

Dans mon expérience avec Ansible, j'ai vu les deux approches utilisées. J'ai vu des développeurs répertorier des commandes ad hoc dans un simple script Bash et d'autres créer des playbooks soignés. Bien que les scripts Bash avec Ansible ad hoc puissent sembler plus simples, Ansible n'était pas destiné à être utilisé comme ça. Les commandes ad hoc conviennent à certaines tâches simples. Pour un scénario d'automatisation complète, vous avez besoin d'un playbook pour déboguer les activités à exécuter de manière visuellement simple. L'un des avantages importants de l'utilisation de playbooks est que vous pouvez les importer dans Ansible Tower au fur et à mesure que votre chaîne d'automatisation se développe. Comme mentionné précédemment, vous trouverez des développeurs qui préfèrent différentes méthodes, mais en tant que concepteur ou architecte de "chaîne d'automatisation", vous devez tenir compte de l'évolutivité de votre chaîne et déterminer le point auquel vous décidez de consolider vos tâches d'automatisation dans Ansible Tower.

YAML

YAML n'est pas un langage de balisage , (YAML) est le format dans lequel les playbooks Ansible sont écrits. Le format YAML est utilisé dans plusieurs domaines (par exemple, les modèles de chaleur dans OpenStack, la création/modification d'objets dans Kubernetes, etc.). Le format YAML est facile à lire. Cependant, c'est un peu délicat car il est sensible à l'indentation. Si vous n'avez écrit aucun fichier en YAML et pour éviter de passer du temps à déboguer votre playbook, vous devez choisir un éditeur qui comprend la syntaxe et le formatage YAML et qui peut ajuster automatiquement votre indentation. Personnellement, j'aime utiliser l'éditeur Vim gratuit sur les systèmes Linux. Il vous suffit d'ajouter la ligne suivante à un fichier, nommez-le .vimrc et enregistrez-le dans votre répertoire personnel :

autocmd FileType yaml setlocal ai ts=2 sw=2 et

Fichiers

Dans Ansible, il existe certains types de fichiers dont vous entendrez régulièrement parler. En voici quelques-unes :

Livre de jeu

Un playbook est un fichier écrit au format YAML qui contient des tâches à exécuter sur le(s) système(s) cible(s). Les tâches qui ciblent les mêmes systèmes sont généralement regroupées dans un jeu, et un playbook peut contenir un ou plusieurs jeux. Le moteur Ansible exécute les tâches de haut en bas du fichier.

Inventaire

Ansible Inventory est un fichier qui identifie votre ou vos systèmes cibles. Vous pouvez créer des groupes dans votre inventaire pour organiser vos systèmes. Par exemple, vous pouvez créer un groupe pour les serveurs Web et un autre groupe pour les bases de données. Ansible propose deux types de fichiers d'inventaire :

Inventaires statiques :Les fichiers des inventaires statiques peuvent être écrits au format INI ou YAML, et vous pouvez avoir plusieurs fichiers d'inventaire. Vous pouvez spécifier lequel utiliser en tapant -i path dans le fichier de commandes.

Inventaires dynamiques :Un inventaire dynamique est un script qui s'exécute pour obtenir le ou les systèmes ciblés chaque fois que vous exécutez votre playbook. Ceci est utile lorsque vous exécutez vos systèmes de ciblage de playbook déployés dans le cloud, et chaque fois que vous avez plus (ou moins) de système(s), pour le playbook à cibler.

Ansible Tower a prédéfini des scripts d'inventaire dynamiques.

Ansible.cfg

Ansible.cfg est le fichier de configuration Ansible. Il est au format INI. Habituellement, il est enregistré dans /etc/ansible/ansible.cfg . Il contrôle les paramètres Ansible à l'échelle du système. Cependant, vous devrez peut-être modifier un ou plusieurs paramètres pour votre projet spécifique (c'est-à-dire changer le format de stdout à l'écran de JSON à YAML). Vous pouvez créer votre propre ansible.cfg fichier et placez-le dans le répertoire du projet où vous modifiez uniquement le paramètre que vous souhaitez remplacer.

Fichiers variables

Les variables dans Ansible sont un sujet important et nécessitent du temps pour comprendre et pratiquer. Vous pouvez définir des variables dans plus de 20 emplacements. Vous devez comprendre la priorité variable pour choisir le bon emplacement.

Rôles

Les principaux objectifs de l'automatisation sont de minimiser les tâches manuelles et d'accélérer les activités de déploiement. Si vous avez une ou plusieurs tâches que vous effectuez souvent au cours de différentes parties et que vous souhaitez les conserver dans un emplacement partagé et les référencer en cas de besoin, Ansible Roles vous aidera. Ansible Roles a une structure de fichiers que vous devez suivre. Cette structure bien définie facilite le téléchargement des rôles développés par la communauté à utiliser dans vos playbooks.

Galaxie Ansible

Ansible Galaxy est une plate-forme communautaire où vous pouvez télécharger des outils supplémentaires pour Ansible, des modules supplémentaires, des rôles et des playbooks. Si vous débutez avec Ansible, n'oubliez pas qu'Ansible possède une vaste communauté. Pour presque tous les cas que vous souhaitez résoudre avec Ansible, quelqu'un d'autre dans la communauté y a probablement pensé et l'a téléchargé sur Ansible Galaxy. Pour éviter de réinventer la roue, cela vaut la peine de passer un peu de temps sur Ansible Galaxy à rechercher quelque chose qui effectue les tâches que vous voulez, téléchargez-le, puis utilisez-le tel quel ou modifiez-le pour votre propre environnement ou application.

Centre d'automatisation

Comme mentionné précédemment, Ansible dispose d'un grand nombre de modules développés par sa communauté. Cela semble en effet très utile, mais pour les entreprises qui sont très sensibles au délai de mise sur le marché ou qui ont une petite équipe d'automatisation manquant de compétences en codage Python, il est moins souhaitable de s'appuyer uniquement sur les modules communautaires. Certaines pourraient ne pas être prises en charge dans les futures versions d'Ansible, tandis que d'autres pourraient même être abandonnées par leurs développeurs.

Personne n'est tenu de résoudre les problèmes détectés lors de l'utilisation des modules communautaires. Red Hat a donc élevé Ansible du simple outil d'automatisation pris en charge par la communauté au niveau de l'entreprise et a fourni ce qu'on appelle Automation Hub. Automation Hub peut être considéré comme la version payante et prise en charge d'Ansible Galaxy. La beauté de ce service est que vous pouvez choisir les modules dont vous avez besoin qui correspondent à votre version d'Ansible, ainsi qu'obtenir de l'aide si un module ne fonctionne pas comme prévu.

Quelques conseils

Ansible, comme toute technologie informatique, a des bonnes pratiques. Vous pouvez développer le vôtre au fil du temps, mais j'aimerais partager le mien ici :

  1. Commencez à utiliser Ansible. Vous ne pouvez le maîtriser que lorsque vous l'utilisez.
  2. Si vous êtes le concepteur ou l'architecte de la chaîne d'automatisation, bien que vous commenciez par petites étapes, considérez toujours l'avenir et ce que vous devez faire dès le premier jour pour être prêt lorsque votre chaîne d'automatisation s'agrandira.
  3. Si vous écrivez des playbooks pour automatiser des tâches, pensez toujours simple et recherchez Ansible Galaxy. Si vous voyez que ce que vous faites est trop complexe, alors vous allez dans la mauvaise direction car vous ne pourrez pas le maintenir à l'avenir.
  4. L'automatisation n'est pas une démonstration individuelle dans le sens où d'autres personnes travaillent avec vous. Rédigez donc vos manuels de manière claire et descriptive, et utilisez les systèmes SCM pour le contrôle des versions.

Ressources pour apprendre

Ansible propose une variété de ressources d'apprentissage. En voici quelques-unes :

Livres :Ansible a de nombreux livres sur le marché, mais de loin, Ansible :Up and Running, à mon avis, est la référence la plus complète.

IRC :Sur les serveurs freenode, Ansible dispose d'un canal où la communauté peut vous aider si nécessaire.

Documentation en ligne  :La documentation Ansible est en ligne, où vous pouvez la visiter et en tirer des enseignements.

Ressources en ligne et vidéo  :Voici quelques ressources en ligne et vidéo pour apprendre Ansible.

  • Instruction vidéo Ansible
  • Chaîne YouTube d'Ansible
  • Cours Red Hat Ansible

[ Besoin d'en savoir plus sur Ansible ? Suivez un cours de présentation technique gratuit de Red Hat. Ansible Essentials :Présentation technique de la simplicité dans l'automatisation. ] 

Récapitulez

Ansible est un outil de pointe pour l'automatisation informatique. C'est simple à apprendre, accessible et riche en modules. Si vous envisagez plus qu'un simple apprentissage d'Ansible (par exemple, créer votre chaîne d'automatisation ou la migrer vers Ansible), de nombreuses ressources sont disponibles pour vous permettre de démarrer.


Linux
  1. Comment j'utilise Ansible et anacron pour l'automatisation

  2. 10 modules Ansible pour l'automatisation du système Linux

  3. Comment avez-vous commencé avec Linux ?

  4. Processus de démarrage Linux :un guide pour démarrer

  5. Démystifier Ansible pour les administrateurs système Linux

Introduction à la plate-forme d'automatisation Ansible

Présentation du nouveau hub d'automatisation Ansible

Guide de démarrage rapide d'Ansible pour les administrateurs système Linux

Guide hPanel complet

Installer Ansible sur Ubuntu - Guide étape par étape facile

5 méthodes pour obtenir une aide rapide sur les commandes Linux