Modifications entre les versions 3 et 12 (s'étendant sur 9 versions)
Version 3 à la date du 2016-02-18 18:24:37
Taille: 3528
Commentaire:
Version 12 à la date du 2016-09-09 22:57:17
Taille: 5123
Commentaire: petit souci de shell…
Texte supprimé. Texte ajouté.
Ligne 2: Ligne 2:

<<TableOfContents()>>
Ligne 7: 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 10: 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 13: 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 16: Ligne 20:
Ligne 29: Ligne 34:
Ligne 30: Ligne 36:
[default] [defaults]
Ligne 32: Ligne 38:
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
Ligne 34: Ligne 46:
[central]
www.auf.org
Ligne 35: Ligne 50:
www.auf.org
Ligne 40: Ligne 54:
pfsense.wifi.ca.auf pfsense.wifi.ca.auf ansible_python_interpreter=/usr/local/bin/python
Ligne 51: 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 59: 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 64: 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 65: 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 67: Ligne 101:
=== Ansible avec pfSense === Et pour finir on teste le script AUF : {{{
ansible-debian-versions all
}}}

== Ansible avec pfSense ==
Ligne 80: Ligne 118:

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

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é)