Understanding Ad-hoc commands in Ansible

Understanding Ad-hoc commands in Ansible

#day68 of #90daysofdevops

ยท

5 min read

Introduction:)

Welcome to the world of Ansible Ad-hoc commands! In this blog post, we'll delve into the syntax, structure, and practical usage of Ansible Ad-hoc commands. Whether you're a beginner exploring Ansible or an experienced user looking to enhance your skills, this guide is designed to provide a detailed understanding of Ad-hoc commands.

What is Ad-hoc commands?

Ad-hoc commands in Ansible are one-liners used for executing simple tasks on remote hosts without the need to write a playbook. They are helpful for quick and immediate tasks. Ad-hoc commands consist of a combination of Ansible command-line options, modules, and arguments. Here's a breakdown of the components:

  1. ansible: The base command that initiates the execution of Ansible.

  2. <host-pattern>: Specifies the target hosts or groups on which the ad-hoc command will be executed. It can be a single host, a group of hosts, or a pattern that matches multiple hosts.

  3. -m <module>: Specifies the Ansible module to be used for the task. Modules are units of work that perform specific actions on the managed nodes. Examples of modules include ping, shell, copy, apt, etc.

  4. -a "<arguments>": Specifies the arguments or parameters to be passed to the module. The arguments depend on the chosen module and the task you want to perform.

Ansible with "-m" tag

In Ansible, the -m option is used to specify the module to be executed. Modules in Ansible are discrete units of code that can be used to perform specific tasks on managed nodes. The -m option allows you to choose which module should be executed for a particular operation.

Here's a basic syntax of the ansible command with the -m option:

ansible <host-pattern> -m <module-name> -a <module-arguments>
  • <host-pattern>: Specifies the target hosts or groups.

  • <module-name>: Specifies the Ansible module to be used.

  • <module-arguments>: Specifies the arguments or parameters for the module.

For example, if you want to use the ping module to check the connectivity to your hosts, you would run:

ansible <host-pattern> -m ping

Here, <host-pattern> is replaced with the actual host or group of hosts you want to target.

Different modules perform different tasks, such as managing files, installing packages, restarting services, etc. The -m option allows you to choose the appropriate module for the task you want to accomplish. Always refer to the Ansible documentation for information on available modules and their usage.

Ansible with "-a" tag

In Ansible, the -a option is used to specify the arguments or parameters for an ad-hoc command.

Here's a basic syntax of an ad-hoc command with the -a option:

ansible <host-pattern> -a "<command>"
  • <host-pattern>: Specifies the target hosts or groups.

  • <command>: Specifies the command or task to be executed on the hosts.

For example, if you want to use the shell module to run a simple command like ls on your hosts, you would run:

ansible <host-pattern> -m shell -a "ls"

Here, <host-pattern> is replaced with the actual host or group of hosts you want to target.

The -a option allows you to pass arguments to the module specified with the -m option. It enables you to customize the behavior of the module for the specific task you want to perform. Always ensure that the command is enclosed in double quotes when using the -a option.


Ansible Ad Hoc Command Examples

Certainly! Here are two Ansible ad-hoc commands:

  1. Ping Command to Ping 2 Servers from Inventory File:

     ansible server1:server2 -m ping
     # or 
     ansible <server_group> -m ping
    

    • This command targets the servers server1 andserver2 from the inventory file.

    • The -m ping option specifies the use of the ping module to check connectivity.

  1. Ad-hoc Command to Check Uptime on Servers:

     ansible all -m command -a "uptime"
    

    • This command targets all servers from the inventory file using all.

    • The -m command option specifies the use of the command module to run a shell command.

    • The -a "uptime" argument passes the uptime command to the command module, checking the system uptime.

  2. Managing Files:

    • To copy a file from the local machine to remote servers:

        ansible servers -m copy -a "src=/path/to/local/file.txt dest=/remote/path/"
      

      This is server1 in which we see hello.txt is there

    • To delete a file on remote servers:

        ansible servers -m file -a "path=/remote/path/file.txt state=absent"
      

      From server1 file is removed

  3. Installing Packages:

    • To install a package using the package manager (e.g., apt for Ubuntu):

        ansible servers -m apt -a "name=package-name state=present"
      
  4. Restarting Services:

    • To restart a service on remote servers:

        ansible servers -m service -a "name=service-name state=restarted"
      
    • Replace service-name with the actual name of the service.

For more you can go through this LINK


Connect with me:)

Thank you for diving into this blog with me! I trust you found the information both helpful and enlightening. To stay updated on the latest in DevOps ๐Ÿš€, make sure to follow me. Remember, staying informed means staying ahead in the dynamic world of DevOps!

Feel free to connect with me on:

LinkedIn

Twitter

GitHub

For more updates and engaging discussions on DevOps, let's connect! ๐Ÿš€ #DevOpsCommunity

ย