Understanding Ad-hoc commands in Ansible
#90 Days of DevOps Challenge - Day 56
Table of contents
- Write an ansible ad hoc ping command to ping 3 servers from the inventory file.
- Write an ansible ad hoc command to check uptime.
- Write an ansible ad hoc command to check the free memory or memory usage of hosts using the ansible ad hoc command
- Write an ansible Ad hoc command to get physical memory allocated to the host
- Write an ansible Ad hoc command to check the disk space on all hosts in an inventory file
- Write an ansible Ad hoc command to Create a Directory with 755 permission
- Write an ansible Ad hoc command to Create a file with 755 permission
- Write an ansible Ad hoc command to run a shell command with sudo on all hosts
- Write an ansible Ad hoc command to check the version on all the servers
- Write an ansible Ad hoc command to copy a file to all hosts in an inventory file
- Write an ansible Ad hoc command to list all the running processes on a specific host in an inventory file
In Ansible, ad-hoc commands are used to execute simple tasks or run commands on remote systems without the need to create and run a playbook. Ad-hoc commands are useful for performing quick tasks or one-time operations. Here's an example of how to use ad-hoc commands in Ansible:
ansible <target> -m <module> -a "<arguments>"
Let's break down the components of the ad-hoc command:
<target>
: Specifies the target hosts or groups of hosts where the command should be executed. You can specify hosts using their inventory name, IP address, or other patterns defined in your Ansible inventory.<module>
: Specifies the Ansible module to be used for the task you want to perform. Modules are Ansible's units of reusable automation, providing functionality for various operations like executing commands, managing packages, manipulating files, etc. Examples of modules includecommand
,shell
,copy
,apt
,service
, etc.<arguments>
: Contains the specific arguments and options required by the chosen module. These arguments vary depending on the module being used. Refer to the Ansible documentation for each module's specific options.
Write an ansible ad hoc ping command to ping 3 servers from the inventory file.
ansible all -m ping -i <path_to_inventory_file>
Ex:- ansible -m ping -i /etc/ansible/hosts server1:server2:server3
In this command:
-m ping
specifies the use of theping
module to execute the ping operation on the specified servers.-i /etc/ansible/hosts
indicates the inventory file to be used, which is located at/etc/ansible/hosts
. You can replace this path with the actual path to your inventory file if it is different.server1:server2:server3
is the list of target hosts separated by colons. It targets the three servers you want to ping.
Running this command will execute the ping
module on the three specified servers from the /etc/ansible/hosts
inventory file and provide you with the ping results.
Write an ansible ad hoc command to check uptime.
ansible all -a uptime -i <path_to_inventory_file>
Ex:- ansible all -a uptime -i /etc/ansible/hosts
Replace <path_to_inventory_file>
with the actual path to your inventory file.
In this command:
all
is the target, indicating that theuptime
command should be executed on all hosts defined in the inventory file.-a "uptime"
specifies the argument to be passed to thecommand
module, which is theuptime
command in this case.-i <path_to_inventory_file>
indicates the inventory file to be used. Replace<path_to_inventory_file>
with the actual path to your inventory file.
Running this command will execute the uptime
command on all servers defined in the inventory file and display the uptime information for each server.
Write an ansible ad hoc command to check the free memory or memory usage of hosts using the ansible ad hoc command
ansible all -i <path_to_inventory_file> -m command -a "free -m"
Ex:- ansible all -i /etc/ansible/hosts -m command -a "free -m"
In this command:
all
is the target, indicating that thecommand
module should be executed on all hosts defined in the inventory file.-i <path_to_inventory_file>
specifies the inventory file to be used. Replace<path_to_inventory_file>
with the actual path to your inventory file.-m command
indicates the use of thecommand
module.-a "free -m"
specifies the argument to be passed to thecommand
module, which is thefree -m
command in this case.
Running this command will execute the free -m
command on all servers defined in the inventory file and display the memory usage information for each server.
Write an ansible Ad hoc command to get physical memory allocated to the host
ansible all -m shell -a "cat /proc/meminfo|head -2"
In this command:
all
is the target, indicating that theshell
module should be executed on all hosts defined in the inventory file.-m shell
specifies the use of theshell
module.-a "cat /proc/meminfo | head -2"
specifies the argument to be passed to theshell
module. It executes thecat /proc/meminfo | head -2
command, which reads the first two lines from the/proc/meminfo
file.-i <path_to_inventory_file>
indicates the inventory file to be used. Replace<path_to_inventory_file>
with the actual path to your inventory file.
Running this command will execute the cat /proc/meminfo | head -2
command on all servers defined in the inventory file and display the first two lines of the /proc/meminfo
file, which contain memory-related information, for each server.
Write an ansible Ad hoc command to check the disk space on all hosts in an inventory file
ansible -i <path_to_inventory_file> all -m shell -a 'df -h'
Ex:- ansible -i /etc/ansible/hosts all -m shell -a 'df -h'
ansible
: The Ansible command-line tool.-i <path_to_inventory_file>
: Specifies the path to the inventory file. The inventory file contains a list of hosts that Ansible will manage.all
: This is the inventory pattern that targets all hosts in the inventory.-m shell
: Specifies the Ansible module to use, in this case, the "shell" module, which allows executing shell commands on remote hosts.-a 'df -h'
: The-a
flag indicates the arguments to pass to the module. In this case, it specifies the shell command'df -h'
, which will display disk usage information in a human-readable format.
When you run this command, Ansible will connect to each host specified in the inventory file and execute the df -h
command on each host. The output will be displayed in your terminal or command prompt window.
Write an ansible Ad hoc command to Create a Directory with 755 permission
ansible all -m file -a "path=/home/ubuntu/ansible state=directory mode=0755" -b
ansible
: The Ansible command-line tool.all
: This is the inventory pattern that targets all hosts in the inventory.-m file
: Specifies the Ansible module to use, in this case, the "file" module, which allows managing files and directories on remote hosts.-a "path=/home/ubuntu/ansible state=directory mode=0755"
: The-a
flag indicates the arguments to pass to the module. Here, it specifies the path, state, and mode of the directory to create.path=/home/ubuntu/ansible
: Specifies the path of the directory to be created.state=directory
: Specifies that the Ansible module should ensure the directory exists. If the directory doesn't exist, it will be created.mode=0755
: Sets the permissions of the directory to0755
, which allows read, write, and execute permissions for the owner and read and execute permissions for the group and others.
-b
: The-b
flag indicates that Ansible should become a privileged user, typically usingsudo
, to perform the task. This is necessary when creating directories in system locations that require administrative privileges.
When you run this command, Ansible will connect to each host specified in the inventory file and create the directory /home/ubuntu/ansible
with the specified permissions.
Write an ansible Ad hoc command to Create a file with 755 permission
ansible all -m file -a "path=/home/ubuntu/testing.txt state=touch mode=0755"
Write an ansible Ad hoc command to run a shell command with sudo on all hosts
ansible all -b -m shell -a 'sudo apt-get update && sudo apt-get install docker.io -y'
Write an ansible Ad hoc command to check the version on all the servers
ansible all -b -m shell -a 'sudo docker --version'
Write an ansible Ad hoc command to copy a file to all hosts in an inventory file
ansible all -m copy -a 'src=/local/path/to/file dest=/remote/path/to/file mode=0644'
Ex:- ansible all -m copy -a 'src=/home/ubuntu/demo.txt dest=/home/ubuntu mode=0644'
This command uses the copy module to copy a file from the local machine to all hosts in the inventory file. The -a 'src=/local/path/to/file dest=/remote/path/to/file mode=0644' option specifies the source and destination paths for the file, as well as the desired file permissions.
first create a simple text file at any location, here create a text file at /home/ubuntu location with name demo.txt
Write an ansible Ad hoc command to list all the running processes on a specific host in an inventory file
ansible all -m command -a 'ps aux'
Thank you for reading!! I hope you find this article helpful!!
if any queries or corrections to be done to this blog please let me know.
Happy Learning!!
Saikat Mukherjee