If you want to install a package or run a command on multiple servers, Ansible is a smart way to do the thing.
Suppose there are 100 Ubuntu servers and you want to perform a task on all the servers simultaneously, suppose you want to install java 11 on all the servers or run a shell script on all the servers, here is the way.
After installing Ansible on your linux server, update inventory file of your linux server i.e. /etc/ansible/hosts
Now add entries of your hundred servers i.e. IP, server login username and ssh key file path.
host1 ansible_ssh_host=23.56.xx.xx ansible_ssh_private_key_file=/path/of/ssh_key.pem ansible_ssh_user=ubuntu
host2 ansible_ssh_host=65.xx.xx.xx ansible_ssh_private_key_file=~/.ssh/ssh_key.pem ansible_ssh_user=ubuntu
host3 ansible_ssh_host=65.xx.xx.xx ansible_ssh_private_key_file=~/.ssh/ssh_key.pem ansible_ssh_user=ubuntu
Suppose this is the shell script which should be run all 100 Ubuntu servers.
#!/bin/bash
sudo apt-get update
sudo apt-get install -y openjdk-11-jdk
Now run the command
ansible all -i /etc/ansible/hosts -a "bash ~/Documents/script.sh"It will install the java 11 on all 100 servers.
This time is surely less than the time taking log into the each server and run the command.
B) Ansible - Run a command on all servers
ansible all -i /etc/ansible/hosts -m command -a 'sudo apt-get update'