Nota

Este módulo es parte de ansible-base e incluido en todas las instalaciones de Ansible. En la mayoría de los casos, puede utilizar el shell de nombre de módulo corto incluso sin especificar el collections: palabra clave. A pesar de eso, le recomendamos que utilice el FQCN para facilitar la vinculación a la documentación del módulo y evitar conflictos con otras colecciones que puedan tener el mismo nombre de módulo.

Nuevo en la versión 0.2: de ansible.builtin

  • Sinopsis
  • Parámetros
  • Notas
  • Ver también
  • Ejemplos de
  • Valores devueltos

Sinopsis

  • los shell El módulo toma el nombre del comando seguido de una lista de argumentos delimitados por espacios.
  • Ya sea un comando de forma libre o cmd El parámetro es obligatorio, consulte los ejemplos.
  • Es casi exactamente como el ansible.builtin.command módulo pero ejecuta el comando a través de un shell (/bin/sh) en el nodo remoto.
  • Para los destinos de Windows, use el ansible.windows.win_shell módulo en su lugar.

Nota

Este módulo tiene un correspondiente complemento de acción.

Parámetros

Parámetro Opciones / Valores predeterminados Comentarios
chdirsendero agregado en 0.6 de ansible.builtin Cambie a este directorio antes de ejecutar el comando.
cmdstring El comando para ejecutar seguido de argumentos opcionales.
creasendero Un nombre de archivo, cuando ya existe, este paso no ser ejecutado.
ejecutablesendero agregado en 0.9 de ansible.builtin Cambie el shell utilizado para ejecutar el comando. Esto espera una ruta absoluta al ejecutable.
forma librestring El módulo de shell toma un comando de forma libre para ejecutarse, como un string.No hay un parámetro real llamado ‘forma libre’. Vea los ejemplos sobre cómo usar este módulo.
eliminasendero agregado en 0.8 de ansible.builtin Un nombre de archivo, cuando no existe, este paso no ser ejecutado.
stdinstring agregado en 2.4 de ansible.builtin Establezca el stdin del comando directamente en el valor especificado.
stdin_add_newlinebooleano agregado en 2.8 de ansible.builtin
    Opciones:

  • no
Ya sea para agregar una nueva línea a los datos stdin.
advertirbooleano agregado en 1.8 de ansible.builtin
    Opciones:

  • no
Ya sea para habilitar las advertencias de tareas.

Notas

Nota

  • Si desea ejecutar un comando de forma segura y predecible, puede ser mejor usar el ansible.builtin.command módulo en su lugar. Las mejores prácticas al escribir libros de jugadas seguirán la tendencia de usar ansible.builtin.command a menos que el ansible.builtin.shell se requiere explícitamente el módulo. Cuando ejecute comandos ad-hoc, use su mejor criterio.
  • El modo de verificación es compatible al pasar creates o removes. Si se ejecuta en modo de verificación y se especifica alguno de estos, el módulo verificará la existencia del archivo e informará el estado modificado correcto. Si no se proporcionan, se omitirá la tarea.
  • Para desinfectar cualquier variable pasada al módulo de shell, debe usar var en lugar de solo var para asegurarse de que no incluyan cosas malas como punto y coma.
  • Una alternativa al uso de scripts de shell en línea con este módulo es usar el ansible.builtin.script módulo posiblemente junto con el ansible.builtin.template módulo.
  • Para reiniciar sistemas, use el ansible.builtin.reboot o ansible.windows.win_reboot módulo.

Ver también

Ver también

ansible.builtin.command

La documentación oficial sobre el ansible.builtin.command módulo.

ansible.builtin.raw

La documentación oficial sobre el ansible.builtin.raw módulo.

ansible.builtin.script

La documentación oficial sobre el ansible.builtin.script módulo.

ansible.windows.win_shell

La documentación oficial sobre el ansible.windows.win_shell módulo.

Ejemplos de

-name: Execute the command in remote shell; stdout goes to the specified file on the remote
  ansible.builtin.shell: somescript.sh >> somelog.txt

-name: Change the working directory to somedir/ before executing the command
  ansible.builtin.shell: somescript.sh >> somelog.txt
  args:chdir: somedir/

# You can also use the 'args' form to provide the options.-name: This command will change the working directory to somedir/ and will only run when somedir/somelog.txt doesn't exist
  ansible.builtin.shell: somescript.sh >> somelog.txt
  args:chdir: somedir/
    creates: somelog.txt

# You can also use the 'cmd' parameter instead of free form format.-name: This command will change the working directory to somedir/
  ansible.builtin.shell:cmd: ls -l | grep log
    chdir: somedir/

-name: Run a command that uses non-posix shell-isms (in this example /bin/sh doesn't handle redirection and wildcards together but bash does)
  ansible.builtin.shell: cat < /tmp/*txtargs:executable: /bin/bash

-name: Run a command using a templated variable (always use quote filter to avoid injection)
  ansible.builtin.shell: cat quote # You can use shell to run other executables to perform actions inline-name: Run expect to wait for a successful PXE boot via out-of-band CIMC
  ansible.builtin.shell:|
    set timeout 300
    spawn ssh [email protected] cimc_host 

    expect "password:"
    send " cimc_password n"

    expect "n cimc_name "
    send "connect hostn"

    expect "pxeboot.n12"
    send "n"

    exit 0
  args:executable: /usr/bin/expect
  delegate_to: localhost

# Disabling warnings-name: Using curl to connect to a host via SOCKS proxy (unsupported in uri). Ordinarily this would throw a warning
  ansible.builtin.shell: curl --socks5 localhost:9000 http://www.ansible.com
  args:warn: no

Valores devueltos

Los valores de retorno comunes están documentados aquí, los siguientes son los campos exclusivos de este módulo:

Llave Devuelto Descripción
cmdstring siempre El comando ejecutado por la tarea.
Muestra:rabbitmqctl join_cluster [email protected]
deltastring siempre El tiempo delta de ejecución del comando.
Muestra:0: 00: 00.325771
finstring siempre La hora de finalización de la ejecución del comando.
Muestra:2016-02-25 09: 18: 26.755339
msgbooleano siempre cambió
Muestra:Cierto
rcentero siempre El código de retorno del comando (0 significa éxito).
comienzostring siempre La hora de inicio de la ejecución del comando.
Muestra:2016-02-25 09: 18: 26.429568
stderrstring siempre El error estándar del comando.
Muestra:ls: no se puede acceder a foo: no existe tal archivo o directorio
stderr_lineslista / elementos =string siempre El error estándar del comando se divide en líneas.
Muestra:[“u’ls cannot access foo”: “No such file or directory'”, “u’ls …'”]
stdoutstring siempre La salida estándar del comando.
Muestra:Nodo de agrupación [email protected] con [email protected] …
stdout_lineslista / elementos =string siempre La salida estándar del comando se divide en líneas.
Muestra:[“u’Clustering node [email protected] con [email protected] … ‘”]

Autores

  • Equipo principal de Ansible
  • Michael DeHaan