GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo mencionar comodines en comandos ansible

Usando ansible en la línea de comandos para ejecutar comandos ad hoc, un comodín es muy útil, p. para ver si existe un archivo en todos los sistemas.

Yo también luché por hacer:$ ansible production -a "ls /mypath/*xxx*"

Pero envolverlo en bash -c '...' funciona:$ ansible production -a "bash -c 'ls /mypath/*xxx*'"


Una tarea definida como esta haría el truco:

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

Como escribió Larsks, la clave es usar register , pero el código no funcionaba en mi versión actual de ansible. Así que aquí se corrige uno:

- shell: ls -d solr*
  register: dir_name

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

No. El chdir= parámetro a, por ejemplo, el command módulo no admite comodines.

Puede lograr lo que quiera usando una variable de registro para almacenar la salida del ls comando:

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

Pero esta es, francamente, una solución fea. Es mejor que utilice simplemente el nombre del directorio real. Si difiere en diferentes hosts, puede usar variables de host para configurarlo adecuadamente.


Linux
  1. Comandos Linux de la A a la Z

  2. Cómo bloquear su sistema:Comandos peligrosos de Linux

  3. 5 Ejemplos de módem al mando en Linux (Cómo configurar Minicom)

  4. Cómo limitar los comandos de usuario en Linux

  5. ¿Cómo almacenar la salida del comando en una matriz en Ansible?

Cómo corregir fácilmente los comandos Bash mal escritos en Linux

Cómo encontrar los comandos más utilizados en Linux

Cómo verificar el historial de comandos de Linux por fechas

3 consejos útiles sobre cómo usar el comando de historial en Linux

Cómo ejecutar múltiples comandos de Linux en un solo comando

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux