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]]. ----