Commandes ad-hoc Ansible

AnsibleAnsibleBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous allez apprendre les commandes ad-hoc Ansible. Les commandes ad-hoc sont des tâches ponctuelles et rapides que vous pouvez exécuter sans avoir besoin d'un playbook complet. Elles sont parfaites pour des opérations simples telles que vérifier l'état du système, gérer des fichiers ou exécuter rapidement des commandes sur plusieurs serveurs. À la fin de ce laboratoire, vous comprendrez comment utiliser efficacement les commandes ad-hoc, ce qui est essentiel pour effectuer des tâches rapides et résoudre les problèmes dans votre environnement géré par Ansible.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/InventoryManagementGroup(["Inventory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) ansible/ModuleOperationsGroup -.-> ansible/command("Execute Commands") ansible/ModuleOperationsGroup -.-> ansible/copy("Transfer Files") ansible/ModuleOperationsGroup -.-> ansible/file("Manage Files/Directories") ansible/ModuleOperationsGroup -.-> ansible/ping("Network Test") ansible/InventoryManagementGroup -.-> ansible/groups_inventory("Define Inventory Groups") linux/SystemInformationandMonitoringGroup -.-> linux/df("Disk Space Reporting") subgraph Lab Skills ansible/command -.-> lab-390441{{"Commandes ad-hoc Ansible"}} ansible/copy -.-> lab-390441{{"Commandes ad-hoc Ansible"}} ansible/file -.-> lab-390441{{"Commandes ad-hoc Ansible"}} ansible/ping -.-> lab-390441{{"Commandes ad-hoc Ansible"}} ansible/groups_inventory -.-> lab-390441{{"Commandes ad-hoc Ansible"}} linux/df -.-> lab-390441{{"Commandes ad-hoc Ansible"}} end

Comprendre la structure des commandes ad-hoc Ansible

Commençons par comprendre la structure de base d'une commande ad-hoc Ansible. La syntaxe générale est la suivante :

ansible [pattern] -m [module] -a "[module options]"

Où :

  • [pattern] est l'hôte ou le groupe d'hôtes de votre inventaire que vous souhaitez cibler.
  • -m [module] spécifie le module Ansible à utiliser.
  • -a "[module options]" fournit les arguments au module.

Avant de commencer à exécuter des commandes, assurons-nous d'avoir un fichier d'inventaire approprié. Créez ou modifiez le fichier d'inventaire :

nano /home/labex/project/inventory

Ajoutez le contenu suivant :

localhost ansible_connection=local

[webservers]
localhost

[dbservers]
localhost

Enregistrez et quittez l'éditeur.

Maintenant, essayons une commande ad-hoc simple pour tester la connectivité de tous les hôtes de notre inventaire :

ansible all -i /home/labex/project/inventory -m ping

Vous devriez voir une sortie similaire à celle-ci :

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Cette commande utilise le module ping pour vérifier la connectivité avec tous les hôtes de l'inventaire. Le mot-clé all cible tous les hôtes.

Décortiquons cette commande :

  • all est le modèle (pattern), ciblant tous les hôtes de l'inventaire.
  • -i /home/labex/project/inventory spécifie le fichier d'inventaire à utiliser.
  • -m ping indique à Ansible d'utiliser le module ping.

Exécuter des commandes avec le module command

L'un des modules les plus couramment utilisés dans les commandes ad-hoc est le module command. Il vous permet d'exécuter des commandes arbitraires sur les hôtes cibles.

Utilisons le module command pour vérifier l'espace disque sur tous les hôtes :

ansible all -i /home/labex/project/inventory -m command -a "df -h"

Vous devriez voir une sortie montrant l'utilisation du disque sur votre machine locale.

Maintenant, essayons d'exécuter une commande uniquement sur le groupe webservers :

ansible webservers -i /home/labex/project/inventory -m command -a "uptime"

Cette commande affichera le temps de fonctionnement (uptime) de tous les hôtes du groupe webservers.

Le module command est le module par défaut, vous pouvez donc omettre -m command si vous utilisez ce module. Par exemple :

ansible dbservers -i /home/labex/project/inventory -a "free -m"

Cette commande affichera l'utilisation de la mémoire sur tous les hôtes du groupe dbservers.

N'oubliez pas que le module command ne prend pas en charge les variables shell ou les opérations telles que |, >, <, &. Pour celles-ci, vous devrez utiliser le module shell.

Utilisation d'autres modules utiles dans les commandes ad-hoc

Bien que le module command soit polyvalent, Ansible propose de nombreux autres modules qui peuvent être très utiles dans les commandes ad-hoc. Explorons-en quelques-uns.

  1. Le module copy :
    Ce module est utilisé pour copier des fichiers de la machine locale vers les hôtes distants. Créons un fichier simple et copions-le sur tous les hôtes :

    echo "Hello from Ansible" > /home/labex/project/hello.txt
    ansible all -i /home/labex/project/inventory -m copy -a "src=/home/labex/project/hello.txt dest=/tmp/hello.txt"

    Cette commande copie le fichier hello.txt de la machine locale dans le répertoire /tmp de tous les hôtes distants.

  2. Le module file :
    Ce module est utilisé pour gérer les fichiers et les répertoires. Créons un répertoire sur tous les serveurs web (webservers) :

    ansible webservers -i /home/labex/project/inventory -m file -a "path=/tmp/test_dir state=directory mode=0755"

    Cette commande crée un répertoire nommé test_dir dans le répertoire /tmp de tous les serveurs web, avec des autorisations définies sur 0755.

  3. Le module setup :
    Ce module est utilisé pour collecter des informations (facts) sur les hôtes distants. Il est exécuté automatiquement au début des playbooks, mais peut également être utilisé dans les commandes ad-hoc :

    ansible dbservers -i /home/labex/project/inventory -m setup

    Cette commande affichera une grande quantité d'informations sur les hôtes du groupe dbservers. Pour limiter la sortie, vous pouvez utiliser des filtres :

    ansible dbservers -i /home/labex/project/inventory -m setup -a "filter=ansible_distribution*"

    Cela n'affichera que les informations liées à la distribution du système d'exploitation.

Ces exemples montrent comment différents modules peuvent être utilisés pour effectuer rapidement diverses tâches à l'aide de commandes ad-hoc.

Résumé

Dans ce laboratoire (lab), vous avez appris les commandes ad-hoc Ansible et comment les utiliser efficacement. Voici les points clés :

  1. Les commandes ad-hoc sont des tâches ponctuelles et rapides qui peuvent être exécutées sans créer de playbook complet.

  2. La structure de base d'une commande ad-hoc est la suivante :

    ansible [pattern] -m [module] -a "[module options]"
  3. Le module ping est utile pour vérifier la connectivité avec les hôtes.

  4. Le module command vous permet d'exécuter des commandes arbitraires sur les hôtes cibles. C'est le module par défaut, donc -m command peut être omis.

  5. D'autres modules utiles pour les commandes ad-hoc incluent :

    • copy : pour copier des fichiers sur des hôtes distants
    • file : pour gérer les fichiers et les répertoires
    • setup : pour collecter des informations (facts) sur les hôtes distants
  6. Vous pouvez cibler des groupes spécifiques d'hôtes en utilisant les noms de groupes définis dans votre fichier d'inventaire.

  7. Les commandes ad-hoc sont idéales pour les tâches rapides, mais pour les opérations plus complexes ou répétitives, les playbooks sont plus appropriés.

Les commandes ad-hoc sont une fonctionnalité puissante d'Ansible qui vous permet d'effectuer rapidement des tâches sur votre infrastructure. Elles sont particulièrement utiles pour résoudre des problèmes, collecter des informations ou apporter rapidement des modifications. Cependant, pour les tâches plus complexes ou répétitives, il est préférable d'utiliser des playbooks.

Au fur et à mesure que vous continuerez à travailler avec Ansible, pratiquez l'utilisation de différents modules dans les commandes ad-hoc. Explorez la documentation d'Ansible pour en savoir plus sur les autres modules et leurs utilisations. N'oubliez pas que, bien que les commandes ad-hoc soient puissantes, elles ne garantissent pas l'idempotence et la reproductibilité des playbooks, utilisez-les donc avec discernement dans les environnements de production.