GNU/Linux >> Tutoriels Linux >  >> Linux

Premiers pas avec les commandes ansibles ad hoc

Dans notre article précédent, nous avons discuté de ce qu'est un fichier d'inventaire et de configuration ansible qui jette les bases pour apprendre ansible. Dans cet article, nous allons discuter des commandes ad hoc ansibles avec quelques exemples.

Présentation

Les commandes Ansible Ad hoc sont idéales lorsque vous souhaitez exécuter des tâches rapides et des tâches qui ne sont pas répétées fréquemment. Généralement, ces commandes ad hoc seront des commandes d'une seule ligne que vous pouvez exécuter directement depuis le terminal ou depuis le script shell.

Avant de savoir comment travailler avec des commandes ad hoc, vous devez savoir ce qu'est l'idempotent. Ansible est idempotent par nature, c'est-à-dire quel que soit le nombre de fois que vous exécutez la même tâche si un état d'objet est déjà modifié, alors ansible n'essaiera pas d'apporter à nouveau les mêmes modifications à cet objet.

Les commandes ad hoc sont soumises via /usr/bin/ansible programme. Vous pouvez exécuter la commande suivante pour obtenir la liste des options prises en charge pour la commande ansible.

$ ansible --help

Si vous n'avez pas de laboratoire ansible pour vous entraîner, vous pouvez consulter notre guide sur la configuration manuelle d'ansible ainsi que sur l'utilisation de Vagrant et Virtualbox.

  • Installer et configurer Ansible sous Linux
  • Configuration automatisée d'Ansible Lab avec Vagrant et Virtualbox sous Linux

Apprenez à connaître la cible

Avant de travailler avec des commandes ad hoc ou d'écrire des playbooks, vous devez avoir une compréhension claire des besoins de l'entreprise et de l'environnement cible avec lequel vous allez travailler.

L'environnement cible peut être n'importe quoi comme des serveurs, des périphériques réseau, des conteneurs, des solutions cloud, etc. pris en charge par ansible. Ici, j'utilise deux nœuds gérés qui exécutent Ubuntu 20.04.

Vous pouvez exécuter la commande suivante pour vérifier la liste des hôtes qui seront utilisés lorsque vous exécuterez la commande ad hoc ou le playbook.

#SYNTAX$ ansible --list-hosts

Le nom du groupe peut être par défaut (tous , dissocié ) ou groupes définis par l'utilisateur .

Si vous souhaitez en savoir plus sur les groupes, consultez le lien suivant.

  • Fichiers d'inventaire et de configuration Ansible

Obtenez la liste des hôtes pour tous les groupes.

$ ansible all --list-hostshosts (2) :managed1.anslab.com managed2.anslab.com

Obtenez une liste d'hôtes pour le groupe défini par l'utilisateur. Ici mon nom de groupe est ubuntu .

$ ansible ubuntu --list-hostshosts (2) :managed1.anslab.com managed2.anslab.com

Fichier d'inventaire

Le fichier d'inventaire contient la liste des nœuds gérés. L'emplacement du fichier d'inventaire sera configuré dans le ansible.cfg dossier. Vous pouvez remplacer l'emplacement du fichier d'inventaire en utilisant le -i ou --inventory indicateur lors de l'exécution de commandes ad hoc.

J'ai deux fichiers d'inventaire et le fichier par défaut est nommé hosts. Pour utiliser le fichier host2, j'ai besoin d'utiliser le -i flag et passez le fichier comme argument.

$ ansible all -i host2 --list-hostshosts (1) :managed2.anslab.com

Attention : Si le fichier d'inventaire se trouve à un emplacement différent, vous devez fournir le chemin absolu. Vous pouvez vous référer au lien suivant pour connaître l'ordre de priorité du fichier d'inventaire.

  • Fichiers d'inventaire et de configuration Ansible

Modules Ansibles

Ansible est un outil avec batterie, ce qui signifie qu'il contient des tonnes de modules. Les modules sont des programmes écrits en Python qui est utilisé par ansible pour s'exécuter sur les nœuds gérés afin d'effectuer une tâche. Ansible suit l'approche plug and play, ce qui signifie que vous pouvez écrire votre propre module et l'exécuter via ansible.

Ansible prend en charge de nombreux packages créés par la communauté open source et différents fournisseurs de produits. Pour obtenir la liste de tous les modules installés sur votre machine, exécutez la commande suivante.

$ ansible-doc -l # LISTE TOUS LES MODULES DISPONIBLES$ ansible-doc -l | grep -i -w ^apt # MODULE GREP PARTICULIER (APT) MODULE

Pour afficher la documentation d'un module, vous pouvez exécuter la commande suivante. Ici, je consulte la documentation du module apt qui est le module du gestionnaire de paquets pour les distributions basées sur Debian/Ubuntu.

$ ansible-doc apt

L'image ci-dessous montre la documentation du module ansible apt.

Syntaxe de commande ad hoc

Il y a quelques entrées que vous devez fournir lors de l'exécution de la commande ad hoc.

  • Vous devez spécifier les cibles (nœuds gérés). Vous pouvez soit utiliser les groupes "tous/dissociés" par défaut, soit des groupes définis par l'utilisateur.
  • Vous devez passer le nom du module en argument au -m drapeau.
  • Chaque module accepte un ensemble d'options. Ces options doivent être passées comme arguments à -a flag. S'il y a plusieurs options, elles doivent être placées entre guillemets.
$ ansible [groupe] -m [module] -a [arguments du module]

Vous pouvez combiner d'autres arguments que nous avons vus dans les sections précédentes dans des commandes ad hoc.

Vérifier la connectivité à l'aide du module Ping

Le premier module que vous exécutez après avoir configuré ansible est le "ping" module. Le module ping est utilisé pour vérifier si la connectivité est correcte avec le contrôleur et les nœuds gérés. Si la connexion réussit, vous obtiendrez une réponse sous la forme "ping :pong" .

$ ansible all -m ping

Vous pouvez également condenser la sortie en utilisant le -o drapeau.

$ ansible all -m ping -o

Exécuter des commandes via le module Shell

Le module shell est utilisé pour exécuter toute commande que vous pouvez exécuter sur le terminal. C'est simplement comme exécuter les commandes sur un terminal Linux.

Vous devez utiliser le -a marquez et passez des commandes en tant qu'arguments au module shell.

$ ansible all -m shell -a "arguments"

Vous trouverez ci-dessous certaines des commandes que j'ai exécutées dans le module shell ansible.

$ ansible all -m shell -a "echo $USER" 
$ ansible all -m shell -a "uptime"
$ ansible all -m shell -a "cat /etc/os-release | grep -i PRETTY_NAME"
$ ansible all -m shell -a "touch /tmp/abc.txt"
$ ansible all -m shell -a "ls -l /tmp/abc.txt"

Alternative au module shell, vous pouvez également utiliser le module de commande qui est le module par défaut dans ansible. Vous pouvez directement utiliser le -a flag et passez les commandes comme argument puisque le module de commande est le module par défaut.

$ ansible all -m command -a "uptime" # PASSER EXCLUSIVEMENT LE MODULE DE COMMANDE$ ansible all -a "uptime" # NE PAS UTILISER -m POUR PASSER LE MODULE

La différence entre le shell et le module de commande est qu'avec le module de commande, vous pouvez accéder à certaines variables spéciales et ne pouvez pas utiliser de canaux, de redirections et d'opérateurs ET logiques.

Exécutez la commande suivante et vous obtiendrez une erreur.

$ ansible all -m command -a "test -f /etc/hosts &&echo 'hosts file present'"

Vous pouvez exécuter la même commande via le module shell et tout fonctionnera correctement.

$ ansible all -m shell -a "test -f /etc/hosts &&echo 'fichier hosts présent'"

Exécuter des scripts via le module de script

Lorsque vous souhaitez exécuter un script (python, shell, etc.), vous pouvez utiliser le module de script qui copiera le script de votre machine contrôleur vers tous les nœuds gérés, puis exécutera le script.

J'ai le code python suivant dans mon /tmp répertoire.

import sys,osprint("CURRENT PYTHON VERSION =", sys.version_info)print("HOSTNAME =", os.uname()[1])print("CURRENT DIRECTORY =", os.getcwd()) 

Exécutez la commande suivante pour utiliser le module de script pour exécuter le script. Le module de script prend en charge des arguments supplémentaires en fonction de la manière dont vous exécutez votre script. Dans mon cas, j'exécute un script python donc j'essaie de passer l'argument supplémentaire "executable=python3" ainsi que le chemin du script.

$ ansible all -m script -a "/tmp/get_host_details.py executable=python3"

Modules de gestion des packages

Il existe des modules pour travailler avec les gestionnaires de packages OS comme dnf , apt , pacman , etc. Ici, j'utilise apt depuis que j'utilise Ubuntu. Mais la syntaxe sera la même pour tous les gestionnaires de packages avec des différences de paramètres. Vous devriez consulter la documentation respective pour en savoir plus.

Pour installer des packages, vous pouvez exécuter la commande suivante et définir l'état sur "présent" . Vous devez choisir -b ou -become drapeau pour exécuter le module avec sudo privilège dans les nœuds gérés. Si vous avez défini le mot de passe pour l'utilisateur sudo, vous devez passer -K avec le -b drapeau qui demandera le devenir mot de passe.

$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=present" -b -K

Pour savoir comment fonctionne l'élévation des privilèges, consultez notre article en utilisant le lien ci-dessous.

  • Authentification SSH Ansible et élévation des privilèges

Pour supprimer les packages, vous pouvez exécuter la commande suivante et définir l'état sur "absent" .

$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=absent" -b -K

Jusqu'à présent, j'ai montré comment utiliser différents modules pour différentes tâches. Cela vous a peut-être permis de bien comprendre comment les choses fonctionnent lorsque vous exécutez des commandes ad hoc.

Il existe des tonnes d'autres modules et cet article ne suffira pas à les parcourir tous. Je vous suggère donc de choisir le module en fonction de votre cas d'utilisation et de commencer à vous entraîner avec les commandes ad hoc.

Couleurs de sortie

Lorsque vous exécutez des commandes ad hoc, vous devriez avoir vu la sortie dans trois couleurs différentes. Chaque couleur a une signification.

ROUGE - ÉchecJAUNE - Succès avec les modifications survenuesVERT - Réussite mais aucune modification ne s'est produite

ROUGE - Échec

Si votre tâche échoue, elle sera imprimée en rouge.

JAUNE - Succès avec les modifications

Lorsque l'état est défini pour changer, la sortie sera de couleur jaune.

VERT – Réussite, mais aucun changement

Lorsque l'état de l'objet n'est pas modifié, la sortie sera de couleur verte.

Conclusion

Dans cet article, nous avons expliqué ce que sont les commandes ad hoc et comment utiliser les commandes ad hoc dans Ansible. En tant que débutant, les commandes ad hoc vous permettront de bien comprendre comment ansible utilise les modules pour accomplir une tâche. Au niveau suivant, vous commencerez à écrire des playbooks au format YAML qui seront traités en détail dans un article séparé.

Lire la suite :

  • Travailler avec des playbooks Ansible

Ressources :

  • https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html
  • https://www.redhat.com/sysadmin/ansible-ad-hoc-commands

Linux
  1. Premiers pas avec Zsh

  2. Premiers pas avec la commande Linux tac

  3. Démarrer avec le Gestionnaire de fichiers Plesk

  4. Démarrer avec ls

  5. Premiers pas avec PostgreSQL sous Linux

Premiers pas avec GitHub

Premiers pas avec les playbooks Ansible

Premiers pas avec le gestionnaire de paquets Nix

Premiers pas avec systemctl

Premiers pas avec les commandes Pacman dans les distributions Linux basées sur Arch

Premiers pas avec Emacs :Explication des commandes de base