To run a command on a remote host we can use the Ansible’s shell module (or win_shell for Windows targets).
By default, the
shell module uses the
/bin/sh shell to execute commands, but it is possible to use other shells such as
/bin/bash by passing the
In this note i will show the examples of Ansible tasks running shell commands on remote hosts and also i will show how to execute ad hoc commands to perform quick tasks without having to write a playbook.
Cool Tip: Ansible Playbook – Print Variable & List All Variables! Read more →
Ansible Shell Command
Run a Shell Command
Create a task as follows to run a shell command on a remote host, e.g. to
ping something from a remote host:
- name: "Run a shell command on a remote host" shell: ping -c1 www.shellhacks.com
TASK [ansible_shell_command : Run a shell command on a remote host] ****************** changed: [127.0.0.1] => changed=true cmd: ping -c1 www.shellhacks.com delta: '0:00:00.097941' end: '2021-12-19 19:01:59.890245' msg: '' rc: 0 start: '2021-12-19 19:01:59.792304' stderr: '' stderr_lines: <omitted> stdout: |- PING www.shellhacks.com (184.108.40.206) 56(84) bytes of data. 64 bytes from us12.default-host.net (220.127.116.11): icmp_seq=1 ttl=48 time=89.7 ms --- www.shellhacks.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 89.709/89.709/89.709/0.000 ms stdout_lines: <omitted>
To see the output of the executed command you should run the
ANSIBLE_VERBOSITY=1 and higher, for example as follows:
$ ANSIBLE_STDOUT_CALLBACK=yaml ANSIBLE_VERBOSITY=1 ansible-playbook ...
Cool Tip: Enable DEBUG mode and increase VERBOSITY in Ansible! Read more →
Run Multiple Commands
To run multiple shell commands in Ansible:
- name: "Execute multiple commands" shell: | whoami uptime & uname -a echo "Test" > /dev/null
Ad-Hoc Command in Ansible
ping Ansible module to check the availability of all hosts listed in
$ ansible -i inventory.ini all -m ping
To run an ad hoc shell command:
$ ansible -i inventory.ini <remote_host> -m shell -a "ping -c1 www.shellhacks.com"
To execute multiple ad hoc shell commands:
$ ansible -i inventory.ini <remote_host> -m shell -a "uptime & whoami"
Cool Tip: How to fix the Ansible’s “sudo: a password is required” error! Read more →
One Reply to “Ansible: Run Shell Command on Remote Host”