In this artical we will known about how to install Ansible, Before going through that we would known about what is Ansible and what’s the uses of it.
Ansible is a automation tool which is used manage the server(‘s) for you. We just need to configure the Ansible to installing a package or configuring a server application or even restarting a service.
But the question is why we need automation tools especially Ansible, the answer is so simple. The maintenance of single server is not always easy, but if we have to manage more than one server, the goes very hard without automation tools. Ansible is agent less which is the major advantage when compared to the other Automation tools like puppet, chef,salt etc. we do not need to have anything installed on the client’s end.In Ansible both push and pull mode are supported. Ansible is a security focused tool it uses Open SSH . Ansible scripts are commonly known as playbooks and they are easy to read.
Installation of Ansible Automation Tool
On RHEL/CENTOS Machines
To install Ansible in RHEL/CENTOS, we should install and enable the epel repository by using the following command.
root@localhost ~]# yum install epel-release
The install the packages python-pip, python-devel and git
[root@localhost ~]# yum install python-pip python-devel git
After the completion of these packages install Ansible Package as follows
[root@localhost ~]# yum install ansible
otherwise you can also install by using pip command as follows
[root@localhost ~]#pip install ansible
To install in fedora just replace yum with dnf, even yum also work fine with fedora.
check the version ansible by using the command –version
Ansible works against multiple systems in your infrastructure at the same time. It does this by selecting portions of systems listed in Ansible’s inventory file, which defaults to being saved in the location /etc/ansible/hosts.
The format for /etc/ansible/hosts is as follows
A group can have multiple server and one server can be a part of multiple groups.
Name of group is enclosed in square brackets . Server names can be their dns names or ip addresses.
Here i used the servers 10.0.0.6 and 10.10.16.137.
[Web Servers] 10.0.0.6 10.10.16.137
SSH-keygen and SSH-copy-id
To run any module or playbook from local host to remote host, we need to create and copy ssh keys to remote hosts by using ssh-keygen and ssh-copy-id.
First we create ssh key by usng ssh-keygen command
Then copy the ssh key to remote host by using ssh-copy-id command.
[root@localhost ~]# ssh-copy-id email@example.com /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys firstname.lastname@example.org's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'email@example.com'" and check to make sure that only the key(s) you wanted were added. [root@localhost ~]# ssh-copy-id firstname.lastname@example.org /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys email@example.com's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'firstname.lastname@example.org'" and check to make sure that only the key(s) you wanted were added.
Ansible ships with a number of modules (called the ‘module library’) that can be executed directly on remote hosts or through Playbooks.
Users can also write their own modules. These modules can control system resources, like services, packages, or files (anything really), or handle executing system commands.
We can ping all the hosts in Inventory file by using the following command
we can also run the command in all remote hosts or particular group in inventory file by using ansible
Here i run the command module ls, it lists out all the files in remote hosts home directory.
we can also know the host name, up time, who logged in remote hosts as follows.
Playbooks are Ansible configuration,deployment of policies we want to apply or enforce in the remote hosts they are in YAML begins with “–“. It consists of a listing of modules and the arguments.
--- hosts: localhost - name: install pip yum: pkg=python-pip state=installed
The above code will install package pip in remote hosts. we will cover in detail about Ansible playbooks in another article.