Professional Documents
Culture Documents
com
Originally published on
LinuxTechLab.com
Automation/configuration management tools are the new craze in the IT world,
organizations are moving towards adopting them. There are many tools that are
available in market like Puppet, Chef, Ansible etc & in this tutorial, we are going to learn
about Ansible.
Ansible is an open source configuration tool; that is used to deploy, configure & manage
servers. Ansible is one of the easiest automation tool to learn and master. It does not
require you to learn complicated programming language like ruby (used in puppet &
chef) & uses YAML, which is a very simple language to learn & understand. Also it does
not require any special agent to be installed on client machines & only requires client
machines to have python and ssh installed, both of these are usually available on
systems.
Pre-requisites
Before we move onto installation part, lets discuss the pre-requisites for Ansible
For ansible server, we will need a machine with either CentOS or RHEL 7 installed &
EPEL repository enabled,
To enable epel repository, use the commands below,
RHEL/CentOS 7
$ rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm
For client machines, Open SSH & python should be installed. Also we need to
configure password less login for ssh session (create public-private keys). To create
public-private keys & configure password less login for ssh session, refer to our
article Setting up SSH Server for Public/Private keys based Authentication
(Password-less login)
Installation
Once we have epel repository enabled, we can now install anisble using yum,
$ yum install ansible
We will now configure hosts that we want Ansible to manage. To do that we need to edit
the file /etc/ansible/hosts & add the clients in following syntax,
[group-name]
alias ansible_ssh_host=host_IP_address
where, alias is the alias name given to hosts we adding & it can be anything,
host_IP_address is where we enter the IP address for the hosts.
For this tutorial, we are going to add 2 clients/hosts for ansible to manage, so lets create
an entry for these two hosts in the configuration file,
$ vi /etc/ansible/hosts
[test_clients]
client1 ansible_ssh_host=192.168.1.101
client2 ansible_ssh_host=192.168.1.102
Save file & exit it. Now as mentioned in pre-requisites, we should have a password less
login to these clients from the ansible server. To check if thats the case, ssh into the
clients and we should be able to login without password,
$ ssh root@192.168.1.101
If thats working, then we can move further otherwise we need to create Public/Private
keys for ssh session (Refer to article mentioned above in pre-requisites).
We are using root to login to other servers but we can use other local users as well & we
need to define it for Ansible whatever user we will be using. To do so, we will first create
a folder named group_vars in /etc/ansible
$ cd /etc/ansible
$ mkdir group_vars
Next, we will create a file named after the group we have created in etc/ansible/hosts
i.e. test_clients
$ vi test_clients
ansible_ssh_user: root
Note :- File will start with (minus symbol), so keep not of that.
If we want to use same user for all the groups created, then we can create only a single
file named all to mention the user details for ssh login, instead of creating a file for
every group.
$ vi /etc/ansible/group_vars/all
ansible_ssh_user: root
Testing hosts
If all the hosts are properly connected, it should return the following output,
client1 | SUCCESS => {
changed: false,
ping: pong
}client2 | SUCCESS => {
changed: false,
ping: pong
}
This complete our tutorial on setting up an Ansible server, in our future posts we will
further explore functionalities offered by Ansible. If any having doubts or queries
regarding this post, use the comment box below.
If you think we have helped you or just want to support us, please consider these :-
Connect to us: Facebook | Twitter | Google Plus
LinuxTechLab.com