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 ou OpenStack
  • une gestion d’une cible populaire comme VMWare vCenter
  • 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

Présentation du produit Ansible

69 minutes de lecture

En guise d’introduction, on décrira dans ce document le projet Ansible, ses cas d’usage, ses composants, son principe de fonctionnement, son installation et les différents binaires qui l’accompagnent.

Monter un lab Linux pour Ansible

33 minutes de lecture

Ce chapitre envisage cinq solutions de lab pour apprendre Ansible pour dans le cadre d’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 deux dernières avec Vagrant et Virtualbox ou Libvirt/KVM.

Comprendre l’inventaire Ansible

38 minutes de lecture

Un inventaire peut être une collection d’hôtes définis dans un fichier plat, dans un dossier organisé de manière conventionnelle ou peut être nourri d’un script dynamique (qui interroge un CMDB par exemple) qui génère une liste de périphériques à cibler dans un livre de jeu. Il peut donc être statique, soit défini d’avance ; il peut aussi se créer dynamiquement ou encore être mis à jour dynamiquement. La portée d’un jeu au sein du livre de jeu est limitée aux groupes d’hôt...

Modules Ansible

35 minutes de lecture

Ce document poursuite l’objectif d’expliquer le concept, le rôle, la manipulation et les codes de retour des modules. 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 ansible ou dans des livres de jeu avec la commande ansible-playbook.

Tâches Ansible Ad-Hoc Linux

62 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

79 minutes de lecture

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

Optimiser les projets Ansible

49 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. Gestion des connexions dans Ansible. Abstraire un livre de jeu avec des inclusions, des imports et des rôles Ansible-Galaxy. Collection Ansible-Galaxy. 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 ...

Configuration Ansible

47 minutes de lecture

Ce document propose d’examiner les principales options de configuration de Ansible sur le noeud de contrôle. Son architecture sans 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 fic...

Glossaire Ansible

48 minutes de lecture

Glossaire des termes utilisés dans le contexte Ansible