Ce support s’adresse aux administrateurs système Linux qui souhaitent disposer des connaissances nécessaires pour gérer plusieurs systèmes à l’aide de Red Hat Ansible Engine, ainsi qu’en matière d’exécution de tâches d’administration système courantes. À l’aide d’exemples concrets, le lecteur apprend ainsi à automatiser le provisionnement, la configuration, l’orchestration d’un grand nombre de systèmes ou le déploiement d’applications.
Après une présentation de l’architecture de Ansible...
Ce support s’adresse aux administrateurs système Linux qui souhaitent disposer des connaissances nécessaires pour gérer plusieurs systèmes à l’aide de Red Hat Ansible Engine, ainsi qu’en matière d’exécution de tâches d’administration système courantes. À l’aide d’exemples concrets, le lecteur apprend ainsi à automatiser le provisionnement, la configuration, l’orchestration d’un grand nombre de systèmes ou le déploiement d’applications.
Après une présentation de l’architecture de Ansible Engine et de son installation, le lecteur découvre les principaux composants d’Ansible et apprend à installer et configurer des noeuds gérés. Il étudie ensuite la conception d’inventaires au format INI ou YAML puis l’utilisation de modules ou de rôles par le biais de commandes ad hoc et de playbooks pour exécuter des tâches d’administration.
Dans la suite du support, il apprend à gérer des variables et à contrôler des tâches avec des itérations ou des conditions, à gérer des faits Ansible ou personnalisés, à manipuler des fichiers sur les hôtes, à créer des modèles Jinja2 ou encore à manipuler les rôles dans Ansible. Dans un ultime chapitre, l’auteur met l’accent sur les outils de dépannage permettant de corriger la syntaxe du langage YAML et de déboguer les tâches dans des playbooks.
Pour finir, le lecteur découvre quelques bonnes pratiques à mettre en oeuvre dans son utilisation de Ansible Engine pour optimiser la gestion de ses systèmes.
Création d’un laboratoire
1. Quels outils vous faut-il ?
1.1 Machines nécessaires
1.2 Solutions alternatives
2. Le système d’hôte et l’hyperviseur
2.1 Installation du système d’hôte
2.1.1 Obtenir l’image ISO
2.1.2 Générer une clé USB amorçable
2.1.3 Bouter le PC sur la clé USB
2.1.4 Processus d’installation
2.1.5 Tâches post-installation
2.2 L’hyperviseur
2.2.1 Présentation de KVM
2.2.2 Installation de KVM
2.2.3 Configuration de KVM
3. Machine virtuelle modèle
3.1 Création de la machine virtuelle modèle
3.2 Installation du système invité
4. Machines virtuelles de travail
4.1 Clonage manuel
4.2 Clonage par script
5. Test des machines virtuelles
5.1 Test de la VM server1
5.2 Test de la VM server2
5.3 Test de la VM server3
Présentation de Ansible
1. Qu'est-ce que Ansible ?
2. Architecture
2.1 Le nœud de contrôle
2.2 Les hôtes gérés
2.3 Play et playbook
2.4 Tâches et modules
2.5 Plug-ins
2.6 Ansible Tower et AWX
2.6.1 Console web
2.6.2 API REST
2.7 Ansible Vault
2.8 Ansible Galaxy
2.9 Configuration Management DataBase
2.10 Réseaux
3. Installation de Ansible
3.1 Prérequis
3.2 Processus d’installation sur RHEL 8.0
3.3 Processus d’installation sur CentOS 8.0
3.4 Tâches post-installation
3.4.1 Afficher la version de Ansible
3.4.2 Afficher la configuration
3.4.3 Tester la communication
4. Hôtes gérés Unix et Linux
5. Hôtes gérés Microsoft Windows
6. Hôtes gérés réseau
Déploiement
1. Gestion des inventaires
1.1 Inventaire statique
1.1.1 Fichier d’inventaire au format INI
1.1.2 Fichier d’inventaire au format YAML
1.1.3 Manipulation de fichiers d’inventaire
1.2 Inventaire dynamique
1.2.1 Utilisation de scripts fournis
1.2.2 Utilisation de vos propres scripts
1.2.3 Exécution de scripts d’inventaire dynamiques
1.3 Inventaires multiples
2. Configuration de Ansible
2.1 Emplacement du fichier ansible.cfg
2.2 Directives du fichier de configuration
2.2.1 Section [defaults]
2.2.2 Section [privilege_escalation]
3. Utilisation des commandes ad hoc
3.1 Module de fichiers
3.2 Modules pour gérer les paquets logiciels
3.3 Modules du système
3.4 Module shell
3.5 Collecter les faits
Playbooks
1. Définition
2. Écriture d’un playbook
3. Exécution de playbooks
3.1 Principe de fonctionnement
3.2 Verbosité des playbooks
3.3 Vérification de la syntaxe
3.3.1 Vérification avec Ansible-playbook
3.3.2 Vérification avec yamllint
3.4 Exécution à blanc d’un playbook
Variables Ansible
1. Définition d’une variable
1.1 Nom d’une variable
1.2 Étendue des variables
1.3 Types de variables
1.3.1 Types primitifs
1.3.2 Dictionnaires
2. Utilisation de variables Ansible
3. Récupérer le résultat d’une commande
4. Variables externes
5. Variables définies sur la ligne de commande
6. Chiffrer les variables
6.1 Présentation de Ansible Vault
6.2 Gestion d’un fichier chiffré
6.2.1 Création
6.2.2 Consultation
6.2.3 Modification
6.2.4 Chiffrer un fichier existant
6.2.5 Déchiffrer un fichier existant
6.2.6 Changer le mot de passe d’un fichier chiffré
6.2.7 Exécution d’un playbook
Gestion des faits
1. Présentation des faits de Ansible
1.1 Collecte des faits
1.2 Variable ansible_facts
1.3 Activer ou désactiver la collecte
2. Faits personnalisés
2.1 Stockage des faits
2.2 Faits statiques
2.3 Faits dynamiques
3. Module set_fact
4. Variables magiques
4.1 Variable magique hostvars
4.2 Variable magique groups
4.3 Variable magique group_names
4.4 Variable magique inventory_hostname
Contrôle de tâches
1. Itération de tâches
1.1 Itération sur une simple liste
1.2 Itération sur une liste de hachage
1.3 Itération sur un dictionnaire
1.4 Capturer le résultat d'une tâche en boucle
2. Tâches conditionnelles
2.1 Conditions simples
2.2 Conditions multiples
2.2.1 Conditions combinées avec le mot-clé and
2.2.2 Conditions combinées avec le mot-clé or
3. Gestionnaires Ansible
4. Gestion des erreurs de tâche
4.1 Ignorer l'échec d'une tâche
4.2 Forcer l’exécution des gestionnaires
4.3 Spécifier les conditions d'échec d'une tâche
4.3.1 failed_when
4.3.2 fail
4.4 Spécifier une tâche signalant un résultat « Changed »
4.5 Gérer les erreurs au sein des blocs Ansible
Manipulation de fichiers sur les hôtes
1. Introduction
2. Présentation des modules de fichiers
3. Appliquer les ACL de fichiers
4. Modifier l’horodatage des fichiers
5. Copie de fichiers
5.1 Module copy
5.2 Module fetch
6. Suppression de fichiers
7. Déplacement et renommage des fichiers
8. Recherche de fichiers
9. Informations sur l'état d'un fichier
10. Manipulation d’archives
10.1 Création d’une archive
10.2 Extraction d’une archive
11. Modification de fichiers
11.1 Module lineinfile
11.2 Module blockinfile
11.3 Module replace
12. Modifications de contexte de fichier SELinux
13. Synchronisation de fichiers
14. Modèles JINJA2
14.1 Présentation de Jinja2
14.2 Conception et application d’un modèle
14.3 Structures de contrôle
14.3.1 Boucles
14.3.2 Conditions
14.3.3 Opérateurs
14.4 Filtres
14.4.1 Filtres de variable
14.4.2 Filtres utilisés avec des conditions
14.5 Déployer un fichier personnalisé
Gestion des rôles Ansible
1. Présentation des rôles
2. Structure des rôles
3. Variables
3.1 Variables de rôle
3.2 Variables par défaut
4. Utilisation de rôles
4.1 Fonctionnement des rôles
4.2 Contrôle de l’ordre d’exécution
5. Rôles système
5.1 Présentation des rôles système
5.1.1 Rôles système avec support
5.1.2 Rôles système en préversion technologique
5.1.3 Rôles système en cours de développement
5.2 Installation de rôles système
5.3 Accès à la documentation des rôles système
5.4 Utilisation des rôles système
5.4.1 rhel-system-roles.kdump
5.4.2 rhel-system-roles.network
5.4.3 rhel-system-roles.selinux
5.4.4 rhel-system-roles.storage
5.4.5 rhel-system-roles.timesync
6. Création de rôles
6.1 Création de la structure du dossier
6.2 Définition du contenu du rôle
7. Déploiement de rôle
7.1 Ansible Galaxy
7.1.1 Présentation de Ansible Galaxy
7.1.2 Aide et documentation sur Ansible Galaxy
7.1.3 Rechercher des rôles
7.2 Commande ansible-galaxy
7.2.1 Recherche de rôles
7.2.2 Information d’un rôle
7.2.3 Installation de rôles
7.2.4 Gestion des rôles locaux
Dépannage
1. Introduction
2. Outils de dépannage
2.1 Système de journalisation
2.2 Syntaxe YAML
2.2.1 Configuration de Vim
2.2.2 Utilitaire yamllint
2.3 Commande ansible-playbook
2.3.1 Option --syntax-check
2.3.2 Option --check
2.3.3 Option --step
2.3.4 Option --start-at-task
2.4 Débogage des tâches
2.5 Fonctionnement de Ansible
3. Problèmes de connexion avec les hôtes gérés
3.1 Configuration réseau
3.2 Identification et authentification
3.3 Utilisation de commandes ad hoc
4. Résolution de problèmes concernant les playbooks
4.1 Analyser la sortie à l'écran
4.2 Utilisation du mode check
4.2.1 Prise en charge du mode check
4.2.2 Activation ou désactivation du mode check
4.2.3 Voir les modifications apportées
5. Quelques bonnes pratiques
5.1 Définir le nom des plays et des tâches
5.1.1 Nom d’un play
5.1.2 Nom d’une tâche
5.2 Commentaire et documentation
5.3 Rédaction du code
Index
Philippe PINCHON
Philippe PINCHON est Formateur Systèmes et Réseau depuis de nombreuses années. Il est spécialisé sur les systèmes d’exploitation Linux. À travers les pages de ce livre, il partage volontiers avec le lecteur toutes ses connaissances sur l’administration avancée de serveurs Linux.