Ansible is a tool that used to manage various nodes from an ansible installed Controlling Machine using SSH Protocol. It makes every system administrative tasks more easy.
Ansible Playbook is a organised unit of scripts which is working in the Controller machine (Ansible installed system). Playbook are written in YAML format.
Install Ansible on Centos 7:-
Controller Machine IP:- 10.0.0.209
Node IP :- 10.0.0.206
10.0.0.207
* more ip can be used.
Step 1 :-
Install Ansible using yum in Controller Machine. Check the version of the installed Ansible.
# yum install ansible
# ansible --version
Step 2 :-
Setup Controlling Machine to connect node using ssh protocol.
Create ssh key to access node systems and copy the key to the node.
# ssh-keygen
# ssh-copy-id root@10.0.0.206
# ssh-copy-id root@10.0.0.207
Step 3:-
Add ips of node systems into the Inventory of Ansible by editing /etc/ansible/hosts .
# vim /etc/ansible/hosts
[ansi-test]
10.0.0.206
10.0.0.207
Note: Here both ip can call using name ansi-test
Step 4:-
Test Ansible in the Controller Machine by using below commands.
1. First of all test the Controlling Machine have ping with node system using ansible commands.
# ansible -m ping all
10.0.0.206 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.0.0.207 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Now Lets start to work with Ansible Playbook.
Create Ansible Playbook for CRON :-
Our requirement is to take backup of /test folder to /backup folder at every day 12:00 in all the nodes that are configured to the controller machine with Ansible.
First make /test folder and /backup folder.
# mkdir /backup
# mkdir /test
Now we need to write a backup shell script in the folder /backup_script with the name backup.sh . This script are need to transfer all nodes.
# vim /backup_script/backup.sh
#!/bin/bash
tar vcf /backup/backup_test.`date +\%Y-\%m-\%d_\%H:\%M:\%S`.tar /test
Setup Ansible playbook and create yml script for cronjob :-
Make a directory Playbooks in side /etc/ansible.
# mkdir /etc/ansible/playbooks
Create cron.yml using vim tool.
# vim /etc/ansible/playbooks/cron.yml
tasks:
- name: Install a yum package in Ansible
yum:
name: crontabs
state: present
- name: copy the script into node systems
copy: src=/backup_script/backup.sh dest=/root/
- name: create a cron in node systems
cron:
name: "Backup Cron"
user: "root"
minute: 00
hour: 12
job: "/usr/bin/sh /root/backup.sh 2>&1"
Now we have created Ansible Playbook with name cron.yml. Execute the following command to run the script using Ansible.
# ansible-playbook /etc/ansible/playbooks/cron.yml
Thank you 🙂