Installation et configuration basique d’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.