Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Utilisation du module command dans Ansible
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
DevOps

Utilisation du module command dans Ansible

L'Équipe Alphorm Par L'Équipe Alphorm 16 novembre 2024
Partager
Partager

Exécuter des commandes de manière sécurisée sur des nœuds distants peut être complexe, surtout dans des environnements hétérogènes.

Une mauvaise gestion de l’exécution des commandes peut entraîner des failles de sécurité et des comportements inattendus, compromettant la stabilité du système.

Découvrez comment le module Ansible command offre une solution sécurisée et efficace pour exécuter des commandes, tout en conservant un contrôle granulaire grâce à ses options avancées.

Table de matière
Module Ansible Command : FonctionnementConditions pour Exécution Command AnsibleSécurité du Module Ansible CommandFAQConclusion

Formation Ansible : Le Guide Complet du Débutant

Devenez un expert d'Ansible et simplifiez vos tâches d'administration.

Découvrir cette formation

Le module ansible.builtin.command est utilisé pour exécuter des commandes sur les cibles (nœuds gérés) dans Ansible. C’est l’un des modules les plus simples et les plus couramment utilisés pour lancer des commandes shell de base sur les machines distantes.

Module Ansible Command : Fonctionnement

  • Exécution de Commandes :Le modulecommandpermet d’exécuter des commandes spécifiques sur les nœuds cibles. Il n’interprète pas les caractères spéciaux comme les redirections (>, |) ou les opérateurs de shell (&&, ||). Pour des besoins plus complexes, il est recommandé d’utiliser le moduleshell.
  • Sécurité :Contrairement au module shell, le modulecommandest plus sûr car il ne passe pas par un interpréteur de shell, réduisant ainsi les risques liés à l’exécution de commandes arbitraires.

Conditions pour Exécution Command Ansible

Le module ansible.builtin.command peut être utilisé avec diverses conditions pour contrôler son exécution. Voici quelques exemples de conditions courantes :

  • Répertoire Courant :Vous pouvez spécifier le répertoire dans lequel la commande doit être exécutée en utilisant l’optionchdir.

Exemple : Exécuter une commande dans le répertoire / tmp .

				
					
 - name: Lister les fichiers dans /tmp
ansible.builtin.command:
cmd: ls
chdir: /tmp

				
			

La commande ls est exécuté dans le répertoire courant / tmp .

  • Exécution en Fonction de la Présence d’un Fichier :Vous pouvez utiliser la conditionwhenpour exécuter une commande seulement si un fichier spécifique est présent.

Exemple : Exécuter une commande seulement si le fichier /tmp/fichier_present.txt existe.

				
					
 - name: Vérifier la présence d’un fichier et exécuter une commande
ansible.builtin.command:
cmd: echo "Le fichier est présent"
when: ansible_facts['os_family'] == "RedHat"

				
			
  • Exécution en Fonction de l’Absence d’un Fichier :De la même manière, vous pouvez exécuter une commande seulement si un fichier spécifique est absent.

Exemple : Exécuter une commande seulement si le fichier /tmp/fichier_absent.txt n’existe pas.

				
					
 - name: Vérifier l’absence d’un fichier et exécuter une commande
ansible.builtin.command:
cmd: echo "Le fichier est absent"
when: not ansible_facts['os_family'] == "RedHat"

				
			

Pour récapituler cette partie, voici un visuel résumant ce concept :

Schéma du fonctionnement du module Ansible Command

Sécurité du Module Ansible Command

Dans cette partie, nous allons nous concentrer uniquement sur la machine Ubuntu. Par conséquent, nous allons commenter la machine Redhat dans l’inventaire de la machine de contrôle de la manière suivante :

Fichier hosts Ansible avec groupes de serveurs

Voilà, nous avons en commentaire la nœud basé sur redhat. Ensuite, nous allons exécuter le playbook :

				
					
 - hosts: all
tasks:
- name: Return testfile to register var
command: "cat /tmp/testFile"
register: testFile
- name: display testFile content
command: " echo {{testFile}}"

				
			

Ce playbook récupère le contenu du fichier /tmp/testFile sur tous les hôtes spécifiés, le stocke dans une variable nommée testFile, puis affiche ce contenu à l’écran. Pour exécuter ce playbook avec succès, il est nécessaire de créer le fichier testFile dans le répertoire / tmp de l’hôte géré et d’y ajouter un contenu préalablement.

Terminal Ubuntu éditant un fichier avec Nano

Copier le playbook dans le fichier command-playbook.yml du nœud de contrôle maintenant pour pouvoir l’executer :

Playbook Ansible affiché dans l'éditeur Nano

Exécutons maintenant ce playbook avec la commande : ansible-playbook command-playbook.yml et nous obtenons le résultat attendu comme ceci :

Capture d'écran d'un playbook Ansible exécuté

Parfait, nous avons bien récupéré le contenu du fichier dans le noud géré et l’afficher dans le terminal.

Dans la seconde pratique, nous allons exécuter un script sur le nœud géré à partir du nœud de contrôle.

Voici le script que nuìous allons executer :

				
					
 #!/usr/bin/env bash
pwd
cd ~/.ssh
pwd
cat authorized_keys
cd
pwd

				
			

(#!/usr/bin/env bash) : Spécifie l’interpréteur de commandes à utiliser, ici bash, trouvé via env pour assurer la portabilité.

pwd : Affiche le répertoire de travail courant avant chaque commande cd, pour afficher le chemin complet.

cd ~/.ssh : Change le répertoire de travail vers ~/.ssh.

pwd : Affiche à nouveau le répertoire de travail courant après la commande cd, confirmant le changement de répertoire.

cat authorized_keys : Affiche le contenu du fichier authorized_keys situé dans ~/.ssh.

cd : Retourne au répertoire personnel de l’utilisateur.

pwd : Affiche le répertoire de travail courant après le retour au répertoire personnel.

Copions ce script dans le fichier testCommand.sh du nœud géré :

Éditeur nano affichant script shell pour Ansible

Ensuite, créons le playbook et le copier dans le fichier comandsh-playbook.yml permettant d’exécuter ce script :

Playbook Ansible utilisant le module command

Commençons par donner l’autorisation d’exécution à notre script avec la commande

chmod +x testCommand.sh. Ensuite, nous pouvons l’exécuter avec ./testCommand.sh , ce qui affichera le contenu du fichier authorized_keys.

Exécution d'un script Bash avec Ansible

Une fois le script lancé, exécutons ensuite le playbook avec la commande : ansible-playbook -v commandsh-playbook.yml, ce qui affichera les résultats du script.

Sortie de commande Ansible avec détails du playbook

Parfait, nous avons terminé cette partie avec succès.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment fonctionne le module Ansible command?
Le module Ansible command est conçu pour exécuter des commandes spécifiques sur les nœuds gérés. Contrairement à d’autres modules comme shell, il n’interprète pas les caractères spéciaux, ce qui le rend plus sûr. Il est idéal pour les commandes simples qui ne nécessitent pas de redirections ou d’opérateurs de shell. Pour des tâches plus complexes, le module shell est recommandé. L’utilisation de command permet de réduire les risques liés à l’exécution de commandes arbitraires, assurant ainsi une sécurité accrue.
Quelles sont les conditions d'exécution du module command?
Le module command peut être configuré avec différentes conditions pour contrôler son exécution. Par exemple, vous pouvez spécifier le répertoire d’exécution avec l’option chdir. Il est aussi possible d’utiliser la condition when pour exécuter une commande seulement si un fichier spécifique est présent ou absent. Cela permet une gestion fine des opérations, en garantissant que les commandes ne s’exécutent que dans des contextes bien définis, augmentant ainsi la flexibilité et la sécurité de vos playbooks.
Pourquoi le module command est-il plus sûr que shell?
Le module command est plus sûr que shell car il ne passe pas par un interpréteur de shell. Cela signifie qu’il ne traite pas les caractères spéciaux comme les redirections ou les opérateurs de shell, ce qui limite le potentiel d’exécution de commandes arbitraires qui pourraient compromettre la sécurité du système. En utilisant command, vous vous assurez que seules les instructions explicitement définies sont exécutées, réduisant ainsi les risques d’erreurs ou d’abus dans les environnements sensibles.
Comment exécuter un playbook avec le module command?
Pour exécuter un playbook utilisant le module command, il faut d’abord créer le playbook avec les tâches définies. Chaque tâche doit spécifier le module command et la commande à exécuter. Une fois le playbook prêt, vous pouvez l’exécuter avec la commande ansible-playbook suivie du nom du fichier playbook. Assurez-vous que toutes les conditions nécessaires, comme la présence des fichiers ou des répertoires requis, sont remplies sur les nœuds cibles pour garantir un bon déroulement des opérations.
Comment exécuter un script depuis Ansible avec le module command?
Pour exécuter un script sur un nœud distant via Ansible avec le module command, commencez par créer le script sur le nœud cible et assurez-vous qu’il est exécutable. Ensuite, dans le playbook, utilisez le module command pour appeler le script directement. Par exemple, vous pouvez définir une tâche avec la commande ‘./votre_script.sh’. N’oubliez pas de donner les permissions d’exécution au script avec chmod +x avant de l’exécuter. Cette méthode garantit que le script est exécuté dans le bon contexte et avec les droits appropriés.

Conclusion

En comprenant les capacités du module command d’Ansible, vous pouvez sécuriser et simplifier l’exécution de commandes dans vos infrastructures. Quels autres modules Ansible pourraient compléter votre boîte à outils pour une gestion encore plus efficace?

ÉTIQUETÉ : Ansible
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Utilisation du module command dans Ansible

© Alphorm - Tous droits réservés