Cette page présente l'utilisation de Ansible à l'AuF.

<<TableOfContents()>>

== 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
}}}
 . {i} la version 2.1 est disponible pour [[Debian/Jessie]] dans `jessie-backports` et pour [[Ubuntu/Xenial]] dans notre [[DépôtAPT]]
##sudo pip install 'ansible == 1.9.4'
 * se placer dans un dossier de travail, par exemple : {{{
mkdir ~/sysadmin ; cd ~/sysadmin
}}}

## * cloner le dépôt ansible de l'AUF : {{{
##cd ~/sysadmin ; git clone git://git.auf.org/ansible.git
##}}}
## . (!) pour mettre à jour ce dépôt par la suite il suffira de lancer les commandes suivantes : {{{
##cd ~/sysadmin/ansible ; git pull
##}}}
## * ajouter les scripts ansible AUF à vos chemins d'exécutables (`PATH`) : {{{
##cat << __EOF__ >> ~/.profile
##if [ -d "$HOME/sysadmin/ansible/scripts" ] ; then
##    PATH="$PATH:$HOME/sysadmin/ansible/scripts"
##fi
##__EOF__
##}}}

 * 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é SSH<<FootNote(il faut pour ce faire utiliser un agent tel que `ssh-agent` (ou `gpg-agent` quand on a une YubiKey), ce qui est automatique avec une session graphique Ubuntu, puis propager l'usage de l'agent en utilisant un `ssh -A` pour se connecter sur la machine de gestion)>>
  * 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 [[http://docs.ansible.com/ansible/faq.html#how-do-i-handle-python-pathing-not-having-a-python-2-x-in-usr-bin-python-on-a-remote-machine|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 [[https://github.com/ansible/ansible/pull/14931|mon correctif chez Ansible]].

----