GNU/Linux >> Tutoriels Linux >  >> Linux

Comment mentionner un caractère générique dans les commandes ansible

En utilisant ansible sur la ligne de commande pour exécuter des commandes ad hoc, un caractère générique est très utile, par ex. pour voir si un fichier existe sur tous les systèmes.

Moi aussi j'ai eu du mal à faire :$ ansible production -a "ls /mypath/*xxx*"

Mais l'envelopper dans bash -c '...' fonctionne :$ ansible production -a "bash -c 'ls /mypath/*xxx*'"


Une tâche définie comme celle-ci ferait l'affaire :

- name: Move internal directories and files
  command: bash -c 'mv /tmp/parent-dir/*  /opt/destination/'

Comme Larsks l'a écrit, la clé est d'utiliser register , mais le code ne fonctionnait pas sur ma version ansible actuelle. Alors en voici une corrigée :

- shell: ls -d solr*
  register: dir_name

- command: chdir={{ item }} some_command
  with_items: dir_name.stdout_lines

Non. Le chdir= paramètre à, par exemple, le command le module ne prend pas en charge les caractères génériques.

Vous pouvez accomplir ce que vous voulez en utilisant une variable de registre pour stocker la sortie du ls commande :

- shell: ls -d solr*
  register: dir_name
- command: some_command
  args:
    chdir: "{{ dir_name.stdout }}"

Mais c'est, franchement, une solution laide. Vous feriez mieux d'utiliser simplement le nom du répertoire réel. S'il diffère sur différents hôtes, vous pouvez utiliser des variables d'hôte pour le définir de manière appropriée.


Linux
  1. Commandes Linux de A à Z

  2. Comment planter votre système :Commandes Linux dangereuses

  3. 5 exemples de commande de modem à Linux (comment configurer Minicom)

  4. Comment échapper aux commandes dans un alias bashrc ?

  5. Comment puis-je enregistrer des commandes Linux ?

Comment corriger facilement les commandes Bash mal orthographiées sous Linux

Comment trouver les commandes les plus utilisées sous Linux

Comment vérifier l'historique des commandes Linux par dates

3 conseils utiles sur l'utilisation de la commande History sous Linux

Comment exécuter plusieurs commandes Linux en une seule commande

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux