Parallélisation de tâches sur de multiples serveurs avec Ansible
Déjà eu besoin d’exécuter la même action sur plusieurs serveur ? Vous venez de voir qu'une grosse faille de sécurité a été corrigé dans apache et vous réalisez que vous devez mettre à jour votre parc de 200 machines ? Et en plus de ça vous êtes flemmard et vous n'avez pas envie de monter une infrastructure client-serveur pour maintenir les machies à jour ? Ansible est fait pour vous.
Ansible utilise ssh pour communiquer avec les serveurs et ne nécessite l'installation d'aucun autre paquet pour fonctionner.
Sur votre machine locale :
aptitude install ansible
Sur les serveurs ? Vous n'avez besoin de rien de plus que les paquets minimaux de python 2.x.
aptitude install python
configuration
Le fichier principal d'ansible est le fichier d'inventaire dans lequel vous listez les différentes machines à gérer avec ansible. Par défaut, ce fichier est /etc/ansible/hosts
. Vous pouvez cependant utiliser n'importe quel fichier et le préciser lors de l'invocation de ansible.
Exemple de fichier dans ~/hosts :
[node1] vm1.domain.tld vm2.domain.tld [node2] vm3.domain.tld vm4.domain.tld
invocation
ansible -i ~/hosts -m file -a "path=/tmp/test state=touch" all
Avec cette commande, on applique une directive ansible à toutes les machines (all
) contenues dans le fichier ~/hosts
. La directive appel le module ansible file
afin de créer (state=touch
) le fichier /tmp/test
Si nous voulons supprimer ce fichier :
ansible -i ~/hosts -m file -a "path=/tmp/test state=absent" all