Después de de una prolongada recopilación de datos dimos con la solución esta aprieto que tienen algunos de nuestros lectores. Te regalamos la respuesta y deseamos serte de gran apoyo.
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 |
|
Ya sea para agregar una nueva línea a los datos stdin. |
advertirbooleano agregado en 1.8 de ansible.builtin |
|
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
oremoves
. 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 solovar
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