Guide Ansible : La commande Ad-Hoc

La commande Ad-Hoc est une commande ansible en une ligne qui exécute une tâche sur l’hôte cible. Elle te permet d’exécuter une tâche simple en une ligne sur un ou un groupe d’hôtes définis dans la configuration du fichier d’inventaire. Une commande Ad-Hoc n’aura que deux paramètres, le groupe d’un hôte sur lequel tu veux exécuter la tâche et le module Ansible à exécuter.

La commande Ad-Hoc te donne plus d’avantages pour explorer Ansible lui-même. Tu peux effectuer des tâches sans créer de playbook au préalable, comme redémarrer les serveurs, gérer les services, modifier la configuration de la ligne, copier un fichier sur un seul hôte, installer un seul paquet.

Dans ce tutoriel, je vais montrer l’utilisation de base de la commande Ansible Ad-Hoc. J’utiliserai la commande Ad-Hoc pour effectuer des tâches simples qui peuvent être nécessaires dans ton quotidien d’administrateur système.

Conditions préalables

Pour ce guide, nous utiliserons deux serveurs Ubuntu 18.04 LTS, Bionic Beaver. Le serveur ansible aura le nom d’hôte ‘ansible-node’ avec l’adresse IP 10.5.5.20 et le serveur Provision avec le nom d’hôte ‘provision’ et l’adresse IP 10.5.5.21.

Que ferons-nous ?

  1. Commande ad hoc de base
  2. Transfert de fichiers
  3. Mise à jour et mise à niveau
  4. Gérer le paquet
  5. Gérer les services
  6. Vérification du système

Utilisation de base des commandes Ad-Hoc

Tout d’abord, nous allons apprendre l’utilisation de base d’Ansible Ad-Hoc pour la gestion des serveurs. Nous apprendrons la commande de base d’Ansible Ad-Hoc, l’utilisation de la commande Ad-Hoc avec l’authentification par mot de passe ssh, l’escalade des privilèges et l’utilisation de la commande Ad-Hoc contre un groupe d’hôtes.

1. Commande de base

La commande de base d’ansible ad-hoc contre ‘tous’ les hôtes du fichier d’inventaire et en utilisant le module ‘ping’.

ansible all -m ping
  • Le premier paramètre ‘all’ désigne tous les hôtes du fichier d’inventaire.
  • Le deuxième paramètre est l’option ‘-m’ du module, qui exécute le module ping.

Tu obtiendras le résultat ci-dessous.

Utilisation des commandes ad-hoc de base

Une commande ad hoc contre le serveur de provisionnement a été ‘SUCCÈS’ sans aucune modification apportée au serveur et nous obtenons le résultat du module ‘ping’ du serveur de provisionnement ‘pong’.

2. Filtrer les groupes d’hôtes et les hôtes individuels

Tu peux maintenant utiliser la commande Ad-Hoc contre un groupe d’hôtes qui sont déjà définis dans le fichier d’inventaire. Tu peux utiliser ton fichier d’inventaire personnalisé ou le fichier d’inventaire par défaut ‘/etc/ansible/hosts’.

Tu trouveras ci-dessous un exemple d’exécution de la commande ad hoc sur le groupe d’hôtes appelé ‘hakase-testing’ qui est déjà défini dans le fichier de configuration de l’inventaire par défaut.

ansible hakase-testing -m setup -a "filter=ansible_distribution*"

Groupe de filtres d'hôtes et hôte unique

Si tu utilises le fichier d’inventaire personnalisé, ajoute l’option ‘-i’ après le nom du fichier d’inventaire.

ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"

Tu obtiendras le même résultat.

Maintenant, si tu veux t’exécuter contre un seul hôte dans la configuration de l’inventaire, tu peux utiliser le nom de l’hôte comme ci-dessous.

ansible provision -m setup -a "filter=ansible_distribution*"

Et la commande ad-hoc s’exécutera uniquement sur le serveur ‘provision’.

Exécuter uniquement sur le serveur provisionné

3. Utiliser le mot de passe SSH

Nous allons maintenant exécuter une commande ad hoc en utilisant l’authentification par mot de passe ssh demandée. Pour ce faire, tu dois installer le paquet supplémentaire appelé ‘sshpass’ sur le ‘ansible-node’.

Installe le paquet sshpass en utilisant la commande apt ci-dessous.

sudo apt install sshpass -y

Maintenant, exécute la commande ad-hoc et ajoute l’option ‘–ask-pass’ à la fin.

ansible hakase-testing -m ping --ask-pass

Et il te sera demandé le ‘Mot de passe SSH’ pour le serveur.

Utiliser le mot de passe SSH

Saisis ton mot de passe ssh et la commande ad-hoc sera exécutée sur le serveur.

4. Escalade de privilèges

Ansible fournit des fonctionnalités pour l’escalade de privilèges contre les serveurs. Si tu veux exécuter la commande ad-hoc en tant qu’utilisateur non root, tu peux utiliser l’option ‘–become’ pour obtenir les privilèges root et l’option ‘-K’ pour demander le mot de passe.

Exécute la commande ad hoc ‘fdisk -l’ en tant qu’utilisateur ‘hakase’ avec l’option de privilège ‘–become’ et l’option ‘-K’ pour demander le ‘mot de passe SUDO’.

ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K

Voici le résultat.

Escalade de privilèges

Transfert de fichiers

Nous allons maintenant utiliser la commande Ad-Hoc pour le transfert de fichiers depuis et vers le serveur. Nous pouvons transférer un fichier vers le serveur de provisionnement avec le module ‘copy’, et télécharger un fichier depuis le serveur à l’aide du module ‘fetch’.

1. Transférer un fichier vers l’hôte

Dans cet exemple, nous allons exécuter la commande ad-hoc et utiliser le module ‘copy’ pour télécharger la configuration sudoers de l’utilisateur hakase dans le répertoire ‘/etc/sudoers.d’ sur le groupe ‘hakase-testing’.

Exécute la commande ad-hoc ci-dessous.

ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K

Il te sera maintenant demandé le ‘Mot de passe SUDO’ pour l’utilisateur hakase. Tape le mot de passe et tu obtiendras le résultat ci-dessous.

Télécharge le fichier sur l'hôte

Le fichier a été téléchargé dans le répertoire de destination ‘dest’, et tu obtiens le résultat ‘changed’ comme ‘true’.

2. Télécharger un fichier depuis l’hôte

Nous allons maintenant utiliser une commande ad hoc avec le module ‘fetch’ pour télécharger le fichier du serveur d’approvisionnement vers le serveur local ‘ansible-node’.

Télécharge le fichier de configuration ‘/etc/sudoers.d/hakase’ du serveur ‘provision’ vers le répertoire local appelé ‘backup’.

ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'

Et tu obtiendras le fichier appelé ‘hakase-sudoers’ dans le répertoire ‘backup’.

Télécharge le fichier depuis l'hôte

Étape 3 – Mise à jour du référentiel et mise à niveau des paquets

Pour mettre à jour et mettre à niveau le référentiel des serveurs Ubuntu, nous pouvons utiliser la commande ad-hoc avec le module apt.

Mets à jour le référentiel sur le groupe hakase-testing.

ansible hakase-testing -m apt -a 'update_cache=yes' --become

Mets maintenant à jour les dépôts et mets à niveau tous les paquets vers la dernière version en utilisant l’option ‘upgrade=dist’.

ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become

Attends que tous les paquets soient mis à niveau.

Gérer les paquets

C’est très utile lorsque tu essaies de construire et de déboguer ton propre playbook. Car parfois, tu as besoin d’un paquet supplémentaire à installer sur le système. Cette commande ad-hoc te donnera donc un moyen facile d’installer ce paquet sans avoir à te connecter à chaque serveur.

1. Installer le paquet

Installe un seul paquet à l’aide de la commande ad-hoc avec le module apt comme ci-dessous.

ansible hakase-testing -m apt -a 'name=nginx state=latest' --become

2. Supprimer le paquet

Supprime le paquet et purge toute la configuration liée au paquet.

ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become

3. Autoremove

L’exemple ci-dessous consiste à supprimer le paquet nginx et à purger toute la configuration liée au paquet, puis à supprimer tous les paquets inutilisés sur le système.

ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become

Gérer les services

Dans cette étape, nous allons utiliser le module de service sur la commande ad-hoc pour gérer le service système sur le serveur d’approvisionnement.

1. Démarre les services

Démarre le service nginx et ajoute-le à l’heure de démarrage.

ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become

Tu obtiendras le résultat ‘modifié’ et ‘activé’ comme ‘vrai’.

2. Redémarre le service

Si tu veux redémarrer le service, tu peux utiliser la commande suivante.

ansible hakase-testing -m service -a 'name=nginx state=restarted' --become

Le service nginx a été redémarré.

3. Arrêter un service

Pour arrêter le service, change la valeur ‘state’ en ‘stopped’.

ansible hakase-testing -m service -a 'name=nginx state=stopped' --become

Le service nginx sur les serveurs ‘hakase-testing’ a été arrêté.

Vérifier le système

Nous allons maintenant utiliser le module ‘shell’ dans la commande ad-hoc. Et nous allons effectuer une surveillance simple du système à l’aide de commandes Linux simples via l’ad-hoc Ansible.

Tout d’abord, installe le paquet ‘sysstat’ sur tous les serveurs à l’aide de la commande ad-hoc ci-dessous.

ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become

Attends l’installation du paquet ‘sysstat’.

Une fois qu’elle est terminée, tu es prêt à vérifier tous les serveurs.

1. Disque disponible

Vérifie le disque disponible sur la partition racine à l’aide de la commande fdisk.

ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become

Change le nom ‘/dev/sda2’ par ton propre chemin.

2. Utilisation de la mémoire RAM

Vérifie maintenant l’utilisation de la mémoire RAM sur tous les serveurs à l’aide de la commande ‘free -m’.

ansible hakase-testing -m shell -a 'free -m' --become

Le résultat s’affiche comme ci-dessous.

3. Utilisation du CPU

Vérifie l’utilisation du CPU de tous les serveurs à l’aide de la commande mpstat.

ansible hakase-testing -m shell -a 'mpstat -P ALL' --become

La commande mpstat fait partie du paquet ‘sysstat’.

4. Ports ouverts

Vérifie les ports ouverts sur tous les systèmes à l’aide de la commande netstat via la commande ad-hoc.

ansible hakase-testing -m shell -a 'netstat -plntu' --become

5. Temps de fonctionnement

Vérifie maintenant le temps de fonctionnement de chaque serveur.

ansible hakase-testing -m shell -a 'uptime' --become

Vous aimerez aussi...