Ad Hoc Commands in Ansible: Simplifying Configuration Management
Are you looking for a way to easily execute one-off tasks on your servers without having to write a whole playbook? Ansible Ad Hoc commands might be just what you need! These powerful one-liners allow you to carry out ad hoc tasks throughout your whole infrastructure, making it simple to perform quick fixes, run system checks, and much more.
In this post, we’ll dig into the world of Ansible Ad Hoc commands, learning what they are, how they vary from playbooks, and looking at some examples of typical ad hoc commands. So, whether you’re a seasoned Ansible ace or just starting off, keep reading to learn more about this amazing tool!
What is Ansible?
Ansible is a free and open-source automation tool for configuring and managing servers, networks, and applications. It defines tasks and playbooks using a basic YAML-based language, making it simple to understand and use.
Ansible is extremely adaptable and may be used for a broad range of automated tasks, from application deployment to large-scale infrastructure management. Its ease of use and ability to automate complicated processes make it a popular choice for DevOps teams and sysadmins.
What Are Ansible Ad Hoc Commands?
Ansible Ad Hoc commands are single-line commands that can be used to carry out basic operations on remote servers. Unlike Ansible Playbooks, which are YAML files that automate complicated processes and can run many commands, Ad Hoc commands are designed to do a single job fast and efficiently. They are run from the command line and do not require a separate playbook file.
Ad Hoc commands can be used to do operations such as verifying system uptime, installing packages, or creating new user accounts. They are a valuable tool for system administrators who need to run fast, one-time instructions on remote servers without the requirement for a fully-featured playbook.
How to Use Ansible Ad Hoc Commands?
To use ad hoc commands, you must have Ansible installed on the machine you are using. You must also have SSH access to the remote servers you are going to manage. After installing Ansible, you can use the following syntax to carry out ad hoc tasks:
$ ansible <hosts> -i <inventory_file> -m <module> -a “<module_arguments>”
- –ansible: This is the name of the Ansible command-line tool that you are using for carrying out ad hoc commands.
- –<hosts>: The name of the target hosts on which you wish to perform the ad hoc command. You can give a single hostname or IP address, or you can specify many hosts using a pattern. Webservers or webservers[0:3], for example, are both acceptable host patterns.
- -i <inventory_file>: This option provides the path of the Ansible inventory file, which is used to define the hosts and groups that Ansible can manage. The inventory file can be in a variety of forms, including INI and YAML.
- -m <module>: The name of the Ansible module to run on the target hosts. Modules are small pieces of code that perform specialized functions such as file copying and package installation.
- –a “<module_arguments>”: This option defines the arguments to provide to the module. The arguments will vary based on the module. For example, if you’re using the apt module to install a package, you can provide the package name as an argument.
What is the difference between Ansible ad-hoc command and playbook?
People often confuse Ansible ad hoc commands and playbooks. Both are automation tools, but they serve different objectives.
Ad hoc commands in Ansible are one-liner commands that are used to execute a single job on numerous hosts. They are run from the command line and are handy for short and basic operations like checking the status of a service, installing a package, or restarting a service.
Ansible playbooks, on the other hand, are used to perform a sequence of actions, often more sophisticated, across several hosts. Playbooks are YAML-based documents that may be used to describe configuration management, application deployment, and other automated processes. They enable more complicated orchestration and may be used to do things like deploying a whole application stack or upgrading various settings.
Examples of Ansible Ad Hoc Commands:
Please note that in this example, I have used ‘Ubuntu’ as the username for the remote host machine. Therefore, the ‘-u ubuntu’ option has been included in the command.
1) Ping all hosts:
$ ansible all -m ping
This will run the ping module on all of the hosts given in your inventory file. If a host is unavailable, Ansible will report a failure for that host.
2) Check the uptime of a remote server:
$ ansible all -m command -a uptime
Ansible will connect to all hosts listed in the inventory file and perform the “uptime” command on each of them, providing the results.
3) Check the disk usage of a remote server:
$ ansible all -m shell -a “df -h”
This ad hoc command will execute the df -h command on all hosts in your inventory file and output disc use data.
4) Copy a file to a remote server:
$ ansible all -m copy -a “src=<local_path> dest=<remote_path>”
This ad hoc command in Ansible uses the “copy” module to copy a file from the local machine to a remote server specified in your inventory file. The “src” option indicates the local path of the file to be copied, while the “dest” parameter specifies the remote path to which the file should be copied. When you run the command, Ansible will transfer the provided file to all the hosts in your inventory file.
5) Install a package on a remote server:
$ ansible all -m yum -a “name=<package_name> state=present”
This ad hoc command installs a package on all hosts using the Ansible “yum” module. The command uses the “name” option to specify the package name and sets the state to “present” to ensure that the package is installed if it isn’t already.
6) Run a shell command on a remote server:
$ ansible all -m shell -a “<shell_command>”
The ad hoc command ansible all -m shell -a “shell_command>” allows you to perform a shell command on all hosts in the inventory.
7) Gather system facts from all hosts:
$ ansible all -m setup
To gather system facts from all hosts, utilize Ansible’s “setup” module, which is used to collect information about distant hosts such as hardware information, network settings, operating system details, and more.
Advantages of Ansible Ad Hoc Commands:
- Quick and simple: Ad hoc commands are appropriate for fast, one-time actions that do not necessitate the use of a playbook.
- Powerful: Ad hoc commands use the same powerful modules and plugins as Ansible playbooks, so you can perform complex tasks with ease.
- Flexible: Ad hoc commands work with all of the same inventory and configuration files as Ansible playbooks, so you can reuse your existing infrastructure.
By using Ansible ad hoc commands in conjunction with playbooks, users can take full advantage of the power and flexibility of the Ansible automation platform. Thanks for reading!!