Objectifs de la formation
- Positionnement de Ansible
- Installation et configuration
- Les commandes Ad Hoc
- Les playbooks
- Ecrire du code modulaire
- Ecrire un playbook
- Concepts avancés d’Ansible
- Création et utilisation de rôles dans Ansible
- Modules personnalisés
- Configuration de playbooks complexes
- Variables avancées et templating avec Jinja2
- AWX : la version open source d’Ansible Tower
Programme de la formation
Positionnement de Ansible
- Ansible et DevOps.
- Devops & IaC (Infrastructure as Code), le code source de l’infrastructure.
- Outils Puppet, Chef, Saltstack… Ansible.
- Fonctionnement d’Ansible.
- Architecture : inventaire, modules, playbooks, tasks, rôles.
Installation et configuration
- Installation et prise en main de l’outil.
- Les commandes de base d’Ansible.
- Configuration des noeuds : clés ssh, escalade de privilèges sudo.
- Le fichier de configuration.
- L’inventaire : création et utilisation.
Travaux pratiques
Installation d’Ansible et configuration de plusieurs nœuds clients, création de l’inventaire et utilisation des premières commandes.
Les commandes Ad Hoc
- Parallélisme et commandes Shell.
- Transferts de fichiers.
- Les packages avec yum, apt.
- Les utilisateurs et les groupes.
- Les services.
Travaux pratiques
Utilisation des différentes commandes Ad hoc en parallèle sur plusieurs nœuds.
Les playbooks
- Introduction aux playbooks.
- Définition des tasks, plays.
- Syntaxe Yaml.
- Variables, modules et tâches.
- Exécution d’un playbook.
- Test d’un playbook en dry-run.
- Exécution step by step, saut de tâches.
- Gestion des erreurs.
Travaux pratiques
Ecriture d’un playbook simple et composé de plusieurs tâches.
Ecrire du code modulaire
- Notifications et Handlers.
- Les rôles et les includes. Les tags.
- Les modules de la communauté.
- Ansible-galaxy : partager son code.
Travaux pratiques
Exploration de la galaxie Ansible, téléchargement et utilisation de modules, ajout de tags dans un playbook.
Ecrire un playbook
- Les variables. Les templates et les filtres.
- Structures de contrôle : conditions, boucles et blocks.
- Les prompts. Les facts.
- La rédaction de playbooks.
Travaux pratiques
Ecrire un playbook complet pour le déploiement d’un service Apache sur plusieurs nœuds.
Concepts avancés d’Ansible
- Les lookups
- Les modules personnalisés
- Ansible Galaxy
- Les playbook complexes
- Templating avec Jinja 2
- AWX : la version open source d’Ansible Tower
Création et utilisation de rôles dans Ansible
- Rappels sur les rôles et principes de fonctionnement
- Créer une configuration type pour un nouveau rôle
- Variables par défaut
- Exécution de tâches
- Gestion des dépendances
- Utiliser les rôles depuis un playbook
- Télécharger et utiliser des rôles d’Ansible Galaxy
Modules personnalisés
- Introduction aux modules personnalisés
- Boilerplate de module personnalisé
- Gestion des erreurs
- Configurer Ansible pour utiliser les modules personnalisés
- Créer un module personnalisé
- Exécuter un module personnalisé
Configuration de playbooks complexes
- Vue d’ensemble des meilleures pratiques pour créer et gérer les playbooks
- Actions asynchrones
- Utiliser le debugger
- Les différents types de plugins
- Travailler avec les tags
- Utiliser Vault dans les playbooks pour protéger les données confidentielles
- Contrôler l’exécution d’un playbook : stratégies, forks et keywords
Variables avancées et templating avec Jinja2
- Retour sur les filtres, tests et lookups
- Fonctionnalités avancées avec les variables jinja2
- La syntaxe jinja
- Présentation des filtres jinja
- Itération simple et avancée en jinja
- Déclaration de variables locales
- Présentation du système d’inclusion
- Présentation du système de macro
AWX : la version open source d’Ansible Tower
- Qu’est-ce que Tower ? Présentation et installation
- Cas d’usage, quand faut-il utiliser la ligne de commande ?
- La gestion des utilisateurs, identifiants et inventaires
- Workflows
- Tâches d’administration et maintenance courantes