ANSIBLE

J’ai présenté l’autre jour Ansible comme une très bonne solution d’automatisation.

Ansible fonctionne par SSH avec des scripts écrits en Python.

Il n’y a pas d’installation d’agent.

J’utilise quand même le terme « serveur » pour la machine sur laquelle Ansible est installée et « agents » pour les machines à automatiser par Ansible.

 

Installation du « serveur » Ansible :

 

apt-get install python-pip sudo
pip install ansible
adduser ansible
adduser ansible sudo
su - ansible

 

Première configuration du « serveur » :

 

Ajouter les « clients » Ansible dans /etc/ansible/hosts de cette façon :

Les groupes sont séparés par des crochets.

Deux exemples de variables : une pour le port de SSH, l’autre pour le chemin de l’exécutable Python (chez FreeBSD, c’est différent).

[debian]
agent1.maboite.com
agent2.maboite.com ansible_ssh_port=2222
agent3.maboite.com

[bsd]
agent4.maboite.com ansible_python_interpreter=/usr/local/bin/python
agent5.maboite.com ansible_ssh_port=2222 ansible_python_interpreter=/usr/local/bin/python

 

 

Configuration des « agents » Debian

 

J’évite de me connecter avec le compte root, je préfère créer un compte sudoer. Il faut permettre au serveur de se connecter aux clients par clé SSH pour éviter de devoir indiquer les mots de passe à chaque fois.

Installer Python, SSH et sudo mais j’imagine mal que ça ne soit pas déjà le cas :

apt-get install ssh python sudo
adduser ansible
adduser ansible sudo
su - ansible
mkdir .ssh

Copier la clé SSH du serveur sur le compte ansible du client :

ansible@serveur-ansible$ ssh-copy-id -i ~/.ssh/id_rsa.pub ansible@agent1.maboite.com

Tester la connexion sans mot de passe et les droits depuis le serveur :

ansible@serveur-ansible$ ssh agent1.maboite.com
ansible@agent1$ sudo apt-get clean

 

Configuration des « agents » FreeBSD

 

De même que sous Debian : Créer un compte sudoer, permettre au serveur Ansible de se connecter par clé SSH.

Installer Python, SSH et sudo :

pkg install ssh python sudo
adduser

Lancer visudo et ajouter cette ligne :

ansible    ALL=(ALL:ALL) ALL
su - ansible
mkdir .ssh

Copier la clé SSH du serveur sur le compte ansible du client :

ansible@serveur-ansible$ ssh-copy-id -i ~/.ssh/id_rsa.pub ansible@agent4.maboite.com

Tester la connexion sans mot de passe et les droits depuis le serveur :

ansible@serveur-ansible$ ssh ansible@agent4.maboite.com
ansible@agent4$ sudo pkg clean

 

Est-ce que ça marche ?

 

Deux exemples de commandes Ad-Hoc :

ansible all -m ping
ansible debian -m service -a "name=httpd state=restarted" --ask-sudo-passwd

 

Si ça ne marche pas, Ansible vous dira ce qui ne va pas.

Ça marche ? Alors prochaine étape concernera les playbooks.

 

 

Sur le même sujet :