Quelle est la différence entre Shell et Command dans ANIBLE?

Quelle est la différence entre Shell et Command dans ANIBLE?

Dans le noyau anible, il existe différents modules anibles inclus pour presque tous les types de cas d'utilisation. Les modules sont également connus sous le nom de «Plugins de bibliothèque ou de tâches», des unités de code discrètes utilisées sur la tâche PlayBook ou la ligne de commande. Chaque module ANSIBLE s'exécute généralement sur le nœud cible distant et collecte la sortie de retour. Les deux modules Ansible les plus couramment utilisés sont Shell and Command.

Le module de shell dans ANSIBLE est utilisé pour exécuter toutes les commandes de shell contre les hôtes cibles basés sur UNIX. Le module shell exécute des commandes dans les nœuds ou les scripts shell. Un autre module ANSIBLE dédié est le script qui transfère le script shell de la machine de contrôle vers le serveur distant et l'exécute. Dans le module de commande, la commande donnée s'exécute sur tous les nœuds sélectionnés. La commande exécutée ne sera pas traitée via le shell.

Les modules anibles sont presque similaires et effectuent les mêmes tâches sur la première vue, mais il existe des différences cruciales entre ces modules. Ici, nous mentionnerons dans cet article quelques différences principales entre les modules de coquille et de commande dans ANSIBLE.

Différent entre shell vs. Module de commande dans ANIBLE

Dans la plupart des cas d'utilisation, les modules de shell et de commande effectuent le même travail. Cependant, il existe peu de différences principales entre ces deux modules.

Prise en charge des variables et des opérations

En utilisant le module de commande, les commandes ne seront pas exécutées via un shell. Par conséquent, des variables comme $ home ne sont pas disponibles, et des opérations comme, | et et ne fonctionnera pas dans ce cas. Si vous souhaitez utiliser ces variables et opérations, vous devez utiliser un module de shell.

Exécution de la commande

Dans le module shell, les commandes sont exécutées via un shell ou par défaut dans le nœud distant '/ bin / sh'. Comme nous l'avons mentionné ci-dessus, dans le module de commande, l'exécution des commandes n'est pas traitée via le shell. L'emplacement peut être modifié avec une option exécutable. Les caractéristiques de tuyauterie et de redirection sont donc disponibles dans le module de shell.

Sécurité

Si vous souhaitez exécuter une commande de manière prévisible et en toute sécurité, il est recommandé d'utiliser le module de commande au lieu du shell. Le module de commande ne sera pas affecté par l'environnement de l'utilisateur, donc; il est plus sécurisé que le module de shell.

Conclusion

Bien que les deux modules soient utiles, vous devez d'abord vérifier si un module Ansible plus spécifique est disponible pour la tâche donnée. Il est de la meilleure pratique d'utiliser des modules au lieu d'exécuter la commande RAW car les modules remplissent toutes les normes, y compris la gestion des exceptions. Si vous constatez qu'il n'y a pas de module disponible, il est plus sécurisé d'utiliser les modules de commande car les tâches ne seront pas affectées dans la configuration de l'environnement utilisateur. Utilisez les modules de shell si vous avez besoin de caractéristiques et opérations variables spécifiques.