Comment utiliser le module Shell ANSIBLE

Comment utiliser le module Shell ANSIBLE
ANSIBLE est largement utilisé comme moteur d'automatisation pour les besoins tels que la gestion de la configuration, l'approvisionnement en cloud et bien plus encore. L'automatisation sonne bien, mais comment ANIBL? Il utilise des «modules» qui sont responsables de l'automatisation. Sans ces modules, un utilisateur devrait utiliser des commandes ad hoc pour effectuer des tâches.

Cependant, les commandes ad hoc ne sont pas réutilisables. Bien sûr, ils vous fournissent un moyen d'exécuter rapidement des tâches individuelles, mais ils ne peuvent pas être réutilisés. Une analogie pourrait être dessinée où le mode Playbook est comme un script de shell, tandis que les commandes individuelles sont des doublures.

En parlant de Shell, ANIBLE a aussi un module Shell. Ce module est utilisé pour exécuter les commandes de shell sur les systèmes cibles. Dans ce guide, nous allons passer en revue le module Shell ANSIBLE et montrer des exemples de la façon dont il peut être utilisé.

Quel est le module de shell?

Le module de shell anible permet à l'utilisateur d'exécuter des commandes complexes avec redirection, tuyaux, etc. Il prend un nom de commande, ses arguments avec les délimiteurs d'espace blanc et l'exécute sur des hôtes éloignés.

Cela peut sembler exactement la même chose que le module de commande ANSIBLE, mais la différence est qu'il exécute les commandes de l'hôte à l'aide d'un shell. Le module Shell a également accès aux variables d'environnement et aux opérateurs spéciaux tels que | &; etc. Encore mieux, vous pouvez exécuter des scripts entiers à l'aide du module de shell. Néanmoins, il est de notoriété publique parmi les utilisateurs anibles que le module de commande est une option plus sûre et plus prévisible que le module Shell.

Enfin, il est important de garder à l'esprit que ce module fonctionne uniquement avec les systèmes Linux. Les utilisateurs de Windows peuvent utiliser Ansible.les fenêtres.win_shell à sa place. Cela dit, passons dans les détails du module Shell ANSIBLE.

En utilisant le module de shell anible

Avant de commencer à exécuter des commandes et des scripts, jetons un coup d'œil aux paramètres auxquels vous devrez transmettre des valeurs tout en utilisant ce module.

  • Chdir - modifie le répertoire actuel avant l'exécution.
  • CMD - Une chaîne contenant la commande à exécuter, ainsi que ses arguments.
  • Exécutable - nécessite un chemin absolu pour modifier le shell que vous utilisez.
  • Supprime - prend un nom de fichier. Utilisé pour exclure les étapes lorsqu'un fichier n'existe pas.
  • stdin - permet à l'utilisateur de définir le stdin d'une commande sur une valeur spécifique.
  • avertir - prend oui (par défaut) ou non, en activant ou en désactivant les avertissements de tâches.

Avec cela à l'écart, passons à quelques exemples de la façon d'utiliser une coquille ANSIBLE.

Exemple 1: Modification du répertoire de travail

Si vous souhaitez modifier le répertoire de travail avant d'exécuter une commande, voici comment cela serait fait.

- Nom: Changer le répertoire de travail en MyDir

anable.construit.Shell: MyScript.sh >> mylog.SMS

Args:

chdir: mydir /

Maintenant que nous avons créé un playbook, vous pouvez l'exécuter en utilisant le terminal Linux en fonctionnant:

ANSIBLE-PLAYBOOK TESTBOOK.YML

Exemple 2: Extraction de sortie de commande

Si vous souhaitez capturer et stocker la valeur de retour d'une commande shell, le mot clé du registre peut être utilisé.

- Nom: Création d'un .Fichier txt dans $ home

Shell: Echo "Save Me!"> $ Home / Test.SMS

Enregistrement: shell_output

- débogage: var = shell_output

Exemple 3: Vérification de la date

Commençons par vérifier la date de notre serveur distant appelé test. Notez comment la syntaxe du module shell est différente ici. C'est juste une autre façon d'utiliser le module Shell ANSIBLE.

- Nom: Vérification de la date

coquille:

"date"

Registre: datecmd

Tags: datecmd

- débogue: msg = "datecmd.stdout "

Nous avons utilisé la commande simple Date pour vérifier la date d'un système distant. De plus, la sortie de la commande (la date elle-même) est renvoyée à un registre nommé datecmd. Enfin, nous affichons le contenu de la variable de registre DateCMMD en imprimant son attribut stdout.

Exemple 4: Exécution de plusieurs commandes

Dans cet exemple, nous créerons des fichiers texte dans un répertoire temporaire.

Tâches:

- Nom: Création de plusieurs fichiers

anable.construit.Shell: |

echo "je suis un fichier 1"> / tmp / myfile1.SMS
echo "je suis un fichier 2"> / tmp / myfile2.SMS
echo "je suis un fichier 3"> / tmp / myfile3.SMS
devenir vrai
Args:
chdir: / var / log

Ici, nous avons utilisé du code shell pour créer trois fichiers, à savoir MyFile1, myfile2, et myfile3. La ligne CECHET: True vous permet de «devenir» l'utilisateur de l'hôte distant. Enfin, nous passons un argument CHDIR et changeons le répertoire.

Exemple 5: Application de la redirection et du tuyau

Maintenant, voyons comment fonctionne les tuyaux et la redirection dans le module Shell ANSIBLE. Nous exécuterons une commande LS simple avec un peu de prétraitement via awk. De plus, nous utilisons SED pour supprimer les lignes vides. En fin de compte, nous redirigerons la sortie vers un fichier texte.

- Nom: Prenez une liste du répertoire et alimentez-le dans un fichier

coquille:

"ls -lrt / apps | awk 'print $ 9' | sed '/ ^ $ / d'> / tmp / mydir.SMS "

Enregistrement: LSOUT

Tags: lsout

- Nom: afficher le fichier

Shell: Cat / TMP / Dirlist.SMS

Registre: affichage

- débogue: msg = "displayList.stdout_lines "

Tout d'abord, nous exécutons la commande susmentionnée et stockons son résultat dans MyDir.SMS. Ensuite, nous utilisons une autre commande CAT pour enregistrer le contenu du fichier dans un registre. Enfin, cette variable de registre s'affiche.

Comment empêcher l'injection de commande?

Comme nous l'avons mentionné plus tôt, le module de commande est considéré comme une façon plus sûre de faire les choses. Cependant, il a une fonctionnalité quelque peu limitée. Alors, comment utilise-t-on le module shell en toute sécurité?

Vous pouvez utiliser le filtre de devis pour protéger les noms de variables que vous passez au module Shell de l'injection de commande. Ci-dessous est un exemple de cette désinfection.

- Nom: Création d'un .txt avec le filtre de devis

Shell: Echo "Je suis en sécurité"> $ home / SafeFile | citation .SMS

C'est une bonne pratique de toujours utiliser le filtre de devis avec vos variables. Cela empêchera les pirates de changer la commande lors de l'exécution. C'est un peu comme l'injection SQL, mais tant que vous prenez des précautions de sécurité, vous n'avez pas à vous inquiéter!

Conclusion

Le module Shell ANSIBL est un module polyvalent et puissant qui augmente le contrôle des utilisateurs et facilite la configuration à distance. Dans cet article, nous avons examiné ce qu'il fait, quels paramètres il dispose et de quels arguments il a besoin, et plus. J'espère que vous êtes maintenant bien équipé pour utiliser le module Shell ANSIBLE.