Automation Ansible

Ansible est devenu un outil incontournable de gestion d’infrastructure pour des cibles Linux mais aussi pour des cibles du réseau et du centre de données, du nuage. Il est capable de représenter la gestion de la configuration d’une infrastructure sous forme de code, aisé à lire et à gérer. Ansible transforme l’esprit de l’admin traditionnel en dev.

Ce document est un guide de formation sur l’usage d’Ansible.

Prérequis

Pour aborder cette matière quelques pré-requis sont nécessaires :

  • Avoir les notions de base en administration Linux de base (Utilisateurs, fichiers, services, réseau, stockage, système de fichiers, pare-feu, Selinux, etc.)
  • Maîtriser un éditeur de texte comme vi
  • Maîtriser un SCM comme git
  • Disposer des concepts de scripting Bash
  • Avoir des notions de virtualisation logicielle et/ou matérielle

Portée du document

Ce document a pour premier objectif de répondre aux sujets du programme de l’examen de certification RHCE EX294 (Ingénieur certifié Red Hat) pour Red Hat Enterprise Linux 8. Ceux-ci portent sur les compétences de base en administration d’un système Linux RHEL 8 à travers l’outil de gestion Ansible, en ce y compris la gestion du pare-feu, des services de base et de Selinux.

Toutefois, si Ansible est capable de gérer une infrastructure entière qui n’est probablement pas seulement composée de systèmes Red Hat, on ne manquera pas de développer d’autres objectifs comme :

  • une gestion des cibles système Debian/Ubuntu ou Microsoft Windows
  • une gestion des cibles du réseau en ne citant que Cisco IOS
  • une gestion des cibles dans le nuage en ne citant que AWS
  • en tant que wrapper d’API HTTP Rest

Objectifs RHCE EX294

Le document s’aligne sur le programme de l’Examen RHCE EX294 (Ingénieur certifié Red Hat) pour Red Hat Enterprise Linux 8

  • 1. Exécution de toutes les tâches de niveau RHCSA
    • 1.1. Comprendre et utiliser des outils essentiels
    • 1.2. Exploiter des systèmes en cours d’exécution
    • 1.3. Configurer le système de stockage local
    • 1.4. Créer et configurer les systèmes de fichiers
    • 1.5. Déployer, configurer et assurer la maintenance des systèmes
    • 1.6. Gérer les utilisateurs et les groupes
    • 1.7. Gérer la sécurité
  • 2. Maîtrise des composants de base d’Ansible
    • 2.1. Inventaires
    • 2.2. Modules
    • 2.3. Variables
    • 2.4. Facts
    • 2.5. Jeux
    • 2.6. Playbooks
    • 2.7. Fichiers de configuration
    • 2.8. Utiliser la documentation fournie pour trouver des informations spécifiques aux modules et commandes Ansible
  • 3. Installation et configuration d’un nœud de contrôle Ansible
    • 3.1. Installer les paquets requis
    • 3.2. Créer un fichier d’inventaire statique des hôtes
    • 3.3. Créer un fichier de configuration
    • 3.4. Créer et utiliser des inventaires statiques pour définir des groupes d’hôtes
    • 3.5. Gérer les parallélismes
  • 4. Configuration des nœuds gérés par Ansible
    • 4.1. Créer et distribuer des clés SSH aux nœuds gérés
    • 4.2. Configurer la réaffectation des privilèges sur les nœuds gérés
    • 4.3. Valider une configuration fonctionnelle à l’aide des commandes Ansible ad hoc
  • 5. Écriture de scripts pour les tâches d’administration
    • 5.1. Créer des scripts shell simples
    • 5.2. Créer des scripts shell simples qui exécutent les commandes Ansible ad hoc
  • 6. Création des jeux et des playbooks Ansible
    • 6.1. Utiliser des modules Ansible courants
    • 6.2. Utiliser des variables pour récupérer les résultats d’une commande exécutée
    • 6.3. Utiliser des conditions pour contrôler l’exécution des opérations
    • 6.4. Configurer la gestion des erreurs
    • 6.5. Créer des playbooks pour configurer des systèmes selon un état spécifique
  • 7. Utilisation des modules Ansible
    • 7.1. Paquets logiciels et repos
    • 7.2. Services
    • 7.3. Règles de pare-feu
    • 7.4. Systèmes de fichiers
    • 7.5. Périphériques de stockage
    • 7.6. Contenus de fichiers
    • 7.7. Archives
    • 7.8. Tâches planifiées
    • 7.9. Sécurité
    • 7.10. Utilisateurs et groupes
  • 8. Travailler avec des rôles
    • 8.1. Créer et utiliser des rôles
    • 8.2. Télécharger et utiliser des rôles issus d’Ansible Galaxy
  • 9. Utilisation des fonctions Ansible avancées
    • 9.1. Créer et utiliser des modèles pour générer des fichiers de configuration personnalisés
    • 9.2. Utiliser Ansible Vault dans des playbooks pour protéger les données sensibles
    • 9.3. Utilisation de variables et de facts Ansible

Composants de base Ansible

21 minutes de lecture

Ce document décrit la terminologie et les composants Ansible. On tentera ici de comprendre de manière sommaire les composants de base d’Ansible tels que les connexions selon les cibles, les inventaires, les modules, le mode ad-hoc, les variables, les Facts, les jeux, les playbooks ou livres de jeux, les fichiers de configuration YAML et INI, les sorties JSON et les modèles Jinja2, les rôles, Ansible Tower, l’idempotence.

Installation Ansible

8 minutes de lecture

Ce document indique les procédures d’installation de Ansible sur une machine de contrôle Red Hat, CentOS, Fedora, Debian, Ubuntu, via PIP ou encore sous Windows WSL.

Exécutables Ansible

5 minutes de lecture

Ansible vient avec plusieurs programmes. ansible est le programme initial pour l’exécution de commandes ad-hoc, ansible-config Vérifie la configuration courante d’Ansible, ansible-inventory Liste les informations de l’inventaire en format JSON ou YAML, ansible-doc Permet de consulter la documentation hors-ligne, ansible-playbook Permet d’exécuter des livres de jeu, ansible-vault Permet de chiffrer les fichiers qui contiennent des données sensibles, ansible-galaxy Permet de...

Configuration Ansible

31 minutes de lecture

Ce document propose d’examiner les principales options de configuration de Ansible sur le noeud de contrôle. Son architecture son agent laisse le soin à chacun de configurer finement et personnellement le comportement par défaut de la solution. Le comportement d’Ansible peut être influencé de différentes manières : en configurant des variables d’environnement, en passant directement les paramètres sur la ligne de commande ansible ou ansible-playbook, en définissant un fich...

Inventaire Ansible

11 minutes de lecture

Une inventaire peut être une collection d’hôtes définis dans un fichier plat ou un script dynamique (qui interroge un CMDB par exemple) qui génère une liste de périphériques à utiliser dans les livres de jeux. Il est peut être statique, soit défini d’avance ; il peut se créer dynamiquement ou encore être mis à jour dynamiquement. La portée d’un jeu (play) au sein du livre de jeu, le playbook, est limitée aux groupes d’hôtes définis dans l’inventaire (inventory).

Monter un lab Linux pour Ansible

27 minutes de lecture

Ce chapitre propose quatre solutions de lab pour apprendre Ansible pour une gestion de Linux. Une première solution montée avec Docker, deux autres avec Libvirt/KVM gérées en Bash ou avec Ansible lui-même et une dernière avec Vagrant et Virtualbox.

Modules Ansible

33 minutes de lecture

Ce document poursuite l’objectif d’expliquer le concept, le rôle, la manipulation et les codes de retour des modules. Le développement de modules devrait faire l’objet d’un document spécifique. Les modules Ansible sont des bouts de codes écrits principalement en Python (mais tout langage supportant les retours JSON est autorisé) pour modifier l’état d’une propriété d’un hôte. Les modules sont invoqués par l’exécution de tâches soit directement dans la ligne de commande ans...

Tâches Ansible Ad-Hoc Linux

38 minutes de lecture

Ce chapitre envisage la prise de connaissance et la mise en oeuvre de tâches Ansible Ad-Hoc pour administrer un système Linux avec Ansible. Le mode ad-hoc permet d’exécuter des tâches ad-hoc. Rappelons qu’une tâche n’est rien d’autre que l’appel à un module.

Formats JSON et YAML Ansible

30 minutes de lecture

Ansible présente en sortie standard les résultats de ses actions en format JSON. On présentera ici le format JSON et son traitement avec l’outil jq. Ansible utilise le format YAML pour ses fichiers de données statiques pour la facilité d’usage. Enfin, les variables sont présentées dans Ansible grâce aux modèles Jinja2.

Livres de Jeu Ansible

56 minutes de lecture

Synthèse sur les livres de jeu. Jouer avec les facts, les variables, les conditions et les boucles.

Roles Ansible-Galaxy

13 minutes de lecture

Il est possible d’ inclure ou d’importer dans un livre de jeu des fichiers qui comprennent une liste de jeux ou de tâches. L’importation est statique et l’inclusion est dynamique. Ansible Galaxy fait référence au site Web de Galaxy https://galaxy.ansible.com à partir duquel les utilisateurs peuvent partager des rôles. Il fait aussi référence à un outil en ligne de commande pour l’installation, la création et la gestion de rôles à partir de dépôts git. Les rôles permettent...

Tags Ansible

9 minutes de lecture

Si vous avez un grand livre de jeu, il peut s’avérer utile de ne pouvoir en exécuter qu’une partie spécifique plutôt que de tout lire dans le livre. Ansible prend en charge un attribut tags: pour cette raison.

Gestion des Erreurs Ansible

11 minutes de lecture

Gestion des Erreurs Ansible : Ignorer les tâches en échec, Contrôler l’état changed, Contrôler l’état failed, Tâche en échec et handlers, Module fail.

Ansible Vault

5 minutes de lecture

Ansible-vault est un outil intégré à Ansible qui permet de chiffrer les fichiers qui contiennent des données sensibles.

Ansible Tower AWX

13 minutes de lecture

Ansible Tower est Ansible au niveau de l’entreprise. Il s’agit d’une solution Web permettant de gérer une organisation avec une interface utilisateur très simple qui fournit un tableau de bord avec des résumés de l’état de tous les hôtes, qui permet des déploiements rapides et surveille toutes les configurations. Tower permet de partager les informations d’identification SSH sans les exposer, de consigner tous les travaux, de gérer graphiquement les inventaires et de les ...

Glossaire Ansible

48 minutes de lecture

Glossaire des termes utilisés dans le contexte Ansible