Cette page présente l'utilisation de Ansible à l'AuF.
Sommaire
Démarrer avec Ansible
Voici quelques instructions pour démarrer rapidement avec Ansible :
- se placer sur une machine bien sécurisée, depuis laquelle on gérera ensuite toutes les autres machines (via des connexions SSH) :
- dans une petite implantation, avec peu de machines à gérer, cela pourra être le poste client du responsable technique
- dans une implantation plus importante, on pourra dédier une machine pour la gestion technique
installer « la bonne version » de Ansible (maintenant la 2.1, non plus la 1.9) :
sudo aptitude install ansible
la version 2.1 est disponible pour Debian/Jessie dans jessie-backports et pour Ubuntu/Xenial dans notre DépôtAPT
se placer dans un dossier de travail, par exemple :
mkdir ~/sysadmin ; cd ~/sysadmin
créer un fichier de configuration ansible.cfg :
[defaults] inventory = ./hosts retry_files_enabled = True retry_files_save_path = . [ssh_connection] # nécessaire quand son profil est chiffré avec ecryptfs control_path = %(directory)s/%%h-%%p-%%r
créer un fichier d'inventaire des machines à gérer hosts, par exemple :
[central] www.auf.org [ca-debian] sogo.ca.auf.org mail.ca.auf.org [ca-bsd] pfsense.wifi.ca.auf ansible_python_interpreter=/usr/local/bin/python [ca:children] ca-debian ca-bsd
- vérifier que tout est fonctionnel :
vérifier l'accès SSH :
ssh www.auf.org
il faut une première connexion pour enregistrer la clé publique du serveur
il faut que l'accès puisse se faire sans demander le mot de passe de la clé SSH1
vérifier le bon fonctionnement de Ansible :
ansible all -m ping
Ansible nécessite, du côté de la machine à laquelle il se connecte, la présence d'un Python avec support JSON, donc soit Python 2.7, soit une version inférieure à laquelle on ajoutera la librairie simplejson (sudo apt-get install python-simplejson)
expérimenter l'équivalent de dsh :
ansible all -m command -a 'uname -a'
Génération du bilan wiki des versions Debian avec Ansible
Le script AUF nécessite pour le moment une ancienne version de Ansible.
On commence donc par créer un environnement Python contenant Ansible 1.9 :
mkdir -p ~/lib virtualenv --system-site-packages ~/lib/venv-ansible1.9 . ~/lib/venv-ansible1.9/bin/activate pip install 'ansible<2' ansible --version # doit répondre une version 1.9 deactivate
Ensuite on récupère le script AUF :
mkdir -p ~/bin wget -O ~/bin/ansible-debian-versions.py 'http://git.auf.org/?p=ansible.git;a=blob_plain;f=scripts/ansible-debian-versions'
On créer un script shell de lancement du script AUF avec Ansible 1.9 :
cat << __EOF__ > ~/bin/ansible-debian-versions #!/bin/sh . ~/lib/venv-ansible1.9/bin/activate exec python ~/bin/ansible-debian-versions.py "\$@" __EOF__ chmod a+rx ~/bin/ansible-debian-versions
Et pour finir on teste le script AUF :
ansible-debian-versions all
Ansible avec pfSense
Pour pouvoir utiliser Ansible avec pfSense il est nécessaire d'y installer Python (2.7 recommandé).
Voici un exemple de commande pour pfSense 2.1 :
pkg_add -r http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/8.3-RELEASE/packages/Latest/python27.tbz
Il sera ensuite nécessaire de spécifier le chemin particulier de l'interpréteur Python dans notre inventaire :
pfsense.wifi ansible_python_interpreter=/usr/local/bin/python
Source : http://www.laurent-napias.com/post/2015/08/29/connexion-ansible-sur-pfsense-nas-qnap-et-synology
Détection erronée d'un hôte KVM
Le module kvm est parfois chargé inutilement et cela induit Ansible en erreur quant à la détection du type de virtualisation utilisée sur un système. Voir Debian (fin de page) pour la solution à adopter à défaut de l'inclusion de mon correctif chez Ansible.