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.
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 MyDirMaintenant que nous avons créé un playbook, vous pouvez l'exécuter en utilisant le terminal Linux en fonctionnant:
ANSIBLE-PLAYBOOK TESTBOOK.YMLExemple 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 $ homeExemple 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 dateNous 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: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 fichierTout 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 devisC'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.