
La ligne de commande Ansible : `ansible`, `ansible-playbook`, `ansible-doc`
Plongez au coeur de la ligne de commande Ansible. Ce guide détaillé explore `ansible` pour les tâches ad-hoc, `ansible-playbook` pour l'orchestration et `ansible-doc` pour la documentation des modules.
Introduction aux outils en ligne de commande d'Ansible
L'interface en ligne de commande (CLI) est le principal moyen d'interagir avec Ansible. Elle offre un ensemble d'outils puissants pour exécuter des tâches, gérer des configurations et obtenir de l'aide. Comprendre et maîtriser ces commandes est fondamental pour une utilisation efficace d'Ansible. Les trois commandes principales que nous allons explorer en détail sont ansible, ansible-playbook, et ansible-doc. Chacune a un rôle spécifique et contribue à la flexibilité et à la puissance d'Ansible.
Que vous souhaitiez vérifier rapidement l'état d'un service sur un ensemble de serveurs, déployer une application complexe via un playbook structuré, ou simplement explorer les options d'un module particulier, ces commandes seront vos compagnons quotidiens. Leur maîtrise vous permettra de gagner en productivité et d'exploiter pleinement le potentiel d'automatisation d'Ansible.
Nous allons décortiquer la syntaxe, les options courantes et les cas d'usage typiques de chacune de ces commandes, en fournissant des exemples concrets pour illustrer leur fonctionnement et faciliter votre apprentissage.
La commande `ansible` : l'outil pour les actions ad-hoc
La commande ansible est utilisée pour exécuter des tâches dites "ad-hoc". Une commande ad-hoc est une action simple et ponctuelle que vous souhaitez effectuer sur un ou plusieurs noeuds gérés, sans avoir besoin d'écrire un playbook complet. C'est extrêmement utile pour des vérifications rapides, des redémarrages de services, ou la collecte d'informations instantanées.
La syntaxe générale est la suivante :
ansible [options] Où désigne le ou les hôtes cibles (par exemple, all, webservers, une adresse IP spécifique) définis dans votre fichier d'inventaire.Les options les plus couramment utilisées avec la commande ansible sont :
-mou--module-name=: Spécifie le module Ansible à utiliser. Par exemple,ping,command,apt,service. Si non spécifié, le modulecommandest souvent utilisé par défaut pour les arguments simples.-a "ou" --args=": Fournit les arguments au module. La syntaxe des arguments dépend du module utilisé." -iou--inventory=: Spécifie le chemin vers votre fichier d'inventaire. Par défaut, Ansible cherche/etc/ansible/hosts.-uou--user=: Le nom d'utilisateur pour la connexion SSH.-bou--become: Exécute l'opération avec des privilèges élevés (par exemple, en tant que root via sudo).--become-user=: Spécifie l'utilisateur à devenir si différent de root.-kou--ask-pass: Demande le mot de passe de connexion SSH (déconseillé, privilégiez les clés SSH).-Kou--ask-become-pass: Demande le mot de passe pour l'élévation de privilèges (sudo).
ansible :- Vérifier la connectivité avec tous les hôtes :
ansible all -m ping - Obtenir l'uptime de tous les serveurs du groupe `webservers` :
(utilise le module `command` implicitement)ansible webservers -a "uptime" - Installer le paquet `htop` sur tous les serveurs Debian/Ubuntu :
ansible debian_servers -m apt -a "name=htop state=present" -b - Vérifier l'espace disque sur un serveur spécifique :
ansible 192.168.1.100 -m command -a "df -h"
La commande ansible est donc un excellent moyen d'interagir rapidement avec votre infrastructure pour des tâches simples et directes.
La commande `ansible-playbook` : l'orchestrateur de vos automatisations
Tandis que la commande ansible est idéale pour les tâches ponctuelles, ansible-playbook est l'outil que vous utiliserez pour exécuter des scénarios d'automatisation plus complexes, décrits dans des fichiers YAML appelés playbooks. Un playbook peut contenir plusieurs jeux (plays), chacun ciblant des groupes d'hôtes spécifiques et exécutant une série de tâches ordonnées.
La syntaxe de base pour exécuter un playbook est :
ansible-playbook [options] [ ...] Voici quelques-unes des options les plus importantes pour ansible-playbook :
-iou--inventory=: Spécifie le fichier d'inventaire.--check: Mode "dry run". Ansible parcourt le playbook et rapporte les changements qu'il aurait effectués, sans réellement les appliquer. Très utile pour tester vos playbooks.-v, -vv, -vvv, -vvvv: Augmente le niveau de verbosité de la sortie. Utile pour le débogage.-lou--limit: Limite l'exécution du playbook à un sous-ensemble d'hôtes spécifiés dans l'inventaire (par exemple,--limit webserversou--limit server1.example.com).-tou--tags: Exécute uniquement les jeux ou les tâches qui ont les tags spécifiés. On peut utiliser--skip-tagspour exclure des tags.--start-at-task ": Commence l'exécution du playbook à partir d'une tâche spécifique portant ce nom." -e "ou" --extra-vars ": Permet de passer des variables supplémentaires en ligne de commande (par exemple," -e "user=john package=nginx"ou au format JSON-e '{"user":"john", "package":"nginx"}').--syntax-check: Vérifie la syntaxe du playbook sans l'exécuter.
Supposons que vous ayez un playbook nommé deploy_webserver.yml et un inventaire production_hosts :
ansible-playbook -i production_hosts deploy_webserver.ymlPour tester ce playbook sur le groupe `staging` uniquement :ansible-playbook -i production_hosts deploy_webserver.yml --limit staging --checkPour exécuter uniquement les tâches taguées `configure_firewall` :ansible-playbook -i production_hosts deploy_webserver.yml --tags "configure_firewall"L'interprétation de la sortie de ansible-playbook est cruciale. Elle vous indique l'état de chaque tâche pour chaque hôte : ok (la tâche a été exécutée, aucun changement nécessaire ou effectué), changed (la tâche a été exécutée et a modifié l'état du système), failed (la tâche a échoué), unreachable (l'hôte n'a pas pu être contacté), ou skipped (la tâche a été ignorée, souvent à cause d'une conditionnelle).La commande `ansible-doc` : votre documentation intégrée
Ansible est livré avec une multitude de modules, chacun conçu pour effectuer des tâches spécifiques. Avec un si grand nombre de modules disponibles, il est essentiel d'avoir un moyen facile d'accéder à leur documentation. C'est là qu'intervient la commande ansible-doc.
ansible-doc vous permet de consulter la documentation des modules directement depuis votre terminal, sans avoir besoin d'une connexion Internet ou de naviguer sur le site web d'Ansible. Elle fournit des informations détaillées sur les paramètres d'un module, des exemples d'utilisation, et les valeurs de retour.Syntaxe et options courantes :
ansible-doc: Affiche la documentation complète du module spécifié. Par exemple :ansible-doc aptansible-doc -lou--list_files: Liste tous les modules disponibles sur votre système. C'est utile pour découvrir de nouveaux modules.ansible-doc -sou--snippet: Affiche un exemple de playbook (snippet) pour le module spécifié. C'est un excellent point de départ pour utiliser un module dans vos playbooks. Par exemple :ansible-doc -s copyansible-doc -tou--type: Permet de spécifier le type de plugin à documenter (par défaut `module`, mais peut aussi être `lookup`, `callback`, `strategy`, etc.).
Lorsque vous affichez la documentation d'un module, vous trouverez généralement les sections suivantes :
- Synopsis : Une brève description du module.
- Parameters : La liste des paramètres que le module accepte, avec leur type, s'ils sont requis, leur valeur par défaut, et une description de leur utilité. C'est la section la plus importante pour comprendre comment configurer le module.
- Notes : Informations supplémentaires importantes ou des avertissements concernant l'utilisation du module.
- Examples : Des exemples concrets d'utilisation du module dans un playbook. Très utile pour une prise en main rapide.
- Return Values : Les informations que le module retourne après son exécution (souvent utilisées avec la directive `register`).
Prendre l'habitude d'utiliser ansible-doc régulièrement vous rendra beaucoup plus autonome et efficace dans l'écriture de vos playbooks. C'est un outil indispensable pour explorer l'écosystème des modules Ansible et comprendre comment les utiliser correctement.