How to install Ansible and how to run a simple command using Ansible.
In this article, we will walk you through step by step procedure to install Ansible and then run the first ping command on its clients.
We will be using our lab setup built using containers for this exercise. In our all articles related to Ansible, we are referring Ansible server as Ansible control machine i.e. where Ansible software is installed and running. Ansible clients are machines who are being managed using this Ansible.
Pre-requisite
Ansible control machine requirements
It should be a Linux machine. Ansible can bot be installed on Windows OS. and secondly it should have Python installed.
It’s preferred to have passwordless SSH setup between Ansible control machine and managed machine for smooth executions but not mandatory.
Ansible managed machine requirement
It should have libselinux-python
installed if SELinux is enabled which is obviously most of the time.
A Python interpreter should be installed.
Ansible installation
Installation of Ansible is an easy task. Its a package so install it like you install any other package in your Linux. Make sure you have subscribed to the proper repo which has an Ansible engine available to install.
I enabled EPEL repo on my Oracle Linux running in Virtual box and installed it using –
[root@ansible-srv ~]# yum install ansible
Once the installation is done, you need to add your client list in file /etc/ansible/hosts
. Our setup files look like below :
[root@ansible-srv ~]# cat /etc/ansible/hosts
[all:vars]
ansible_user=ansible-usr
[webserver]
k-web1 ansible_host=172.17.0.9
k-web2 ansible_host=172.17.0.3
[middleware]
k-app1 ansible_host=172.17.0.4
k-app2 ansible_host=172.17.0.5
[database]
k-db1 ansible_host=172.17.0.6
Here, we defined the Ansible default user in the inventory file itself. Since we do not have DNS and using containers in our setup, I defined hostname and IP as mentioned above.
Running first Ansible command
As I explained earlier in the Lab setup article, I configured passwordless SSH from the Ansible control machine to the managed node.
Let’s run our first ansible command i.e. ping one hosts. Command syntax is – ansible -m <module> <target>
[root@ansible-srv ~]# ansible -m ping k-db1
k-db1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
We used the ping
module here and the target host is k-db1
. And we received back pong i.e. command successfully executed. In this output –
SUCCESS
is command exit statusansible_facts
is data collected by Ansible while executing a command on the managed node.changed
indicates if the task has to make any changes
Let’s run another simple command like hostname –
[root@ansible-srv ~]# ansible -m command -a hostname k-db1
k-db1 | CHANGED | rc=0 >>
k-db1
Here in the second line you see the command stdout i.e. output. and return code rc
i.e. exit code of the command is 0 confirming command execution was successful.