Modifications entre les versions 10 et 11
Version 10 à la date du 2016-04-13 15:17:12
Taille: 4041
Commentaire: + table des matières
Version 11 à la date du 2016-09-09 22:30:49
Taille: 5122
Commentaire: on bascule vers Ansible 2.x par défaut ! :-)
Texte supprimé. Texte ajouté.
Ligne 9: Ligne 9:
 * se placer sur une machine bien sécurisée, depuis laquelle on se gérera ensuite toutes les autres machines (via des connexions SSH) :  * se placer sur une machine bien sécurisée, depuis laquelle on gérera ensuite toutes les autres machines (via des connexions SSH) :
Ligne 12: Ligne 12:
 * installer « la bonne version » de Ansible (pour le moment une 1.9, pas la 2.0) : {{{
sudo pip install 'ansible == 1.9.4'
 * installer « la bonne version » de Ansible (maintenant la 2.1, non plus la 1.9) : {{{
sudo aptitude install ansible
Ligne 15: Ligne 15:
 . {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'
Ligne 36: Ligne 38:
retry_files_enabled = True
retry_files_save_path = .
Ligne 38: Ligne 42:
# nécessaire quand son profil est chiffré avec ecryptfs
Ligne 41: Ligne 46:
[central]
www.auf.org
Ligne 42: Ligne 50:
www.auf.org
Ligne 58: Ligne 65:
  . (!) il faut que l'accès puisse se faire sans demander le mot de passe de la clé SSH<<FootNote(il faut utiliser `ssh-agent` pour ce faire, ce qui est automatique avec une session graphique Ubuntu, puis transférable en utilisant un `ssh -A` pour se connecter sur la machine de gestion)>>   . (!) 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)>>
Ligne 66: Ligne 73:
 * expérimenter le script AUF de bilan des versions Debian avec Ansible pour MoinMoin : {{{
wget -O ansible-debian-versions 'http://git.auf.org/?p=ansible.git;a=blob_plain;f=scripts/ansible-debian-versions'
python ansible-debian-versions all

== 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
Ligne 71: Ligne 87:
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'
}}}
Ligne 72: Ligne 92:
== Notes == 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
}}}
Ligne 74: Ligne 101:
=== Ansible avec pfSense === Et pour finir on teste le script AUF : {{{
ansible-debian-versions all
}}}

== Ansible avec pfSense ==
Ligne 88: Ligne 119:
=== Détection erronée d'un hôte KVM === == Détection erronée d'un hôte KVM ==
Ligne 90: Ligne 121:
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 en attendant l'inclusion de [[https://github.com/ansible/ansible/pull/14931|mon correctif chez Ansible]]. 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]].

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

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

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


  1. 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 (1)

Ansible (dernière édition le 2016-09-09 22:57:17 par JeanChristopheAndré)