This article is to show you how easy is to use automation tools for managing your servers. If you are new to ansible this article is right for you!
First, you must install ansible, which is pretty easy. At present all Linux distributions have the ansible package:
sudo apt install ansible
sudo yum install ansible
sudo dnf install ansible
emerge -v ansible
Multiple python (version 3) packages will be pulled because the tool is based on python. The following files will appear in your machine (and a lot of python modules under the python directory of your Linux distribution):
/usr/bin/ansible /usr/bin/ansible-config -> ansible /usr/bin/ansible-connection /usr/bin/ansible-console -> ansible /usr/bin/ansible-doc -> ansible /usr/bin/ansible-galaxy -> ansible /usr/bin/ansible-inventory -> ansible /usr/bin/ansible-playbook -> ansible /usr/bin/ansible-pull -> ansible /usr/bin/ansible-vault -> ansible
The important program name is ansible, with which you can do any of the other task.
What you can do using ansible with simple words
At present (July 2019) ansible 2.8.x has around 2080 modules (all modules here https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html) so you will find a solution for any automation task you may encounter. But here our purpose is to show you several simple commands.
ansible uses ssh to connect remotely to other machines and it is the best option to use ssh keys for passwordless connections
Still, ansible has the option to use also password authentication with “–ask-pass” option. In fact, connecting to the remote host could be done without ssh, but another protocol and this is beyond the scope of this article and it is rarely used.
Ansible modules could be used with different Linux distributions without specifying what kind of packaging software or init system is used.
So when you use module to install a package in your server you may not specify to use apt, yum or any other, or when you want to stop/start/reload/restart a service you do not need to specify it is a systemd or openrc or upstart or sysvinit and so on. The modules gather this information from the currently connected remote host and use the proper command to do its job. Look below in the playbook section.
The inventory file
The first thing to do is your file with servers. In terms of ansible, this is your “inventory file” – the file describing how to connect to your servers like hostname, ports, keys and so on.
The default inventory file is in /etc/ansible/hosts, but you can use file in any location if you include it in the ansible with “-i
So open your favorite text editor and write down your servers (it supports two syntaxes INI and YAML styles):
1) Just enumerate your servers’ hostnames.
Using default port 22 and the user you are logged in. Still, if you use “~/.ssh/config” and you included specific options like port, user, identity file these options will be used by ansible to connect to the hosts.