Logo Khaganat
Traductions de cette page?:

Ceci est une ancienne révision du document !


Ansible

Cet article est un gros brouillon de fatras. Ansible est utilisé par certains ici, mais moi, j'y connais rien, et je m'y lance dans l'optique de répliquer certaines manip, entre autre avec BURPS.

C'est donc de la doc pour noob avec probablement des erreurs.

zatalyz 2017/10/13 11:26

Ansible s'installe sur sa machine à soi (pas sur un serveur), afin d'administrer ses serveurs en automatisant pleins de choses. C'est sensé simplifier le boulot du sysadmin1).

Donc, suivant votre système :

sudo apt-get install ansible
yaourt -S ansible
dnf install ansible
...

Le fichier de configuration se trouve dans /etc/ansible/ansible.cfg ; il est en principe fonctionnel tel quel.

Sur Archlinux, il est surtout plein de lignes commentées, de base. Considérez-le comme le fichier expliquant les possibilités d'Ansible.

Ensuite on va renseigner ses serveurs.

Par défaut, Ansible les cherchent dans /etc/ansible/hosts (à créer et paramétrer). Mais on peut créer le fichier du nom qu'on veut à l'emplacement qu'on veut ; il suffira soit de le renseigner dans /etc/ansible/ansible.cfg probablement en renseignant la variable inventory = /chemin/fichier, soit de lancer Ansible avec la variable -i en indiquant le chemin.

ansible -i /chemin/fichier

Créer un ou des fichiers ailleurs a deux avantages :

  • cela permet de séparer suivant les infrastructures, par exemple un fichier pour les serveurs en production, un autre pour les serveurs en pré-production ;
  • cela permet de renseigner son fichier hosts sans avoir besoin des droits root, par exemple en le mettant dans /home/ansible/khanat_hosts.

Renseigner le fichier ansible/hosts

Il y a visiblement plusieurs syntaxes possibles (peut-etre à paramétrer dans /etc/ansible/ansible.cfg ?), on va rester au truc par défaut qui est la syntaxe de type INI, c'est à dire avec des crochets pour les sections, dans ce genre-là :

mail.example.com
 
[webservers]
foo.example.com
bar.example.com
 
[dbservers]
one.example.com
two.example.com
three.example.com

Ce qui est entre crochet est le nom donné à un groupe et ce nom est libre, mais il ne doit pas reprendre un de noms des serveurs géré dessous. Ici par exemple, il y a un groupe de serveur qui concerne le web, un autre groupe avec les machines hébergeant les databases ; les noms ont été choisis pour être parlant.

Les serveurs renseignés dessous peuvent l'être suivant diverses syntaxes :

  • d'après le nom de domaine qui leur est lié (par exemple foo.example.com)
  • d'après leur ip (par exemple 8.8.8.8)
  • d'après leur raccourci renseigné dans .ssh/config (le plus pratique car cela précise le port, l'utilisateur…)

À ce stade ça semble assez inutile…

Exemple avec l'host suivant :

[khanat]
lirria
jukni
ansible -i ./khanat_host -m ping lirria

me demande de rentrer le mot de passe de la clé ssh préalablement envoyé au serveur (jusque là tout va bien), puis répond ceci :

lirria | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}

Mais si je teste la commande sur tout le groupe…

ansible -i ./khanat_host -m ping khanat

Alors :

  • le mot de passe de ma clé est demandé 2 fois à la suite
  • rentré une première fois, il exécute l'appel au premier serveur
  • il faut rentrer une seconde fois le mot de passe… mais cette fois en clair dans le terminal

Quelle est l'utilité de demander le mot de passe à chaque fois, n'y-a-t-il pas moyen de l'enregistrer pour l'ensemble de la commande au moins ? Quid de la sécurité s'il est en clair ?

Sources

1)
En attendant ça fait un truc de plus à apprendre. En même temps si l'outil permet vraiment de faire gagner du temps ensuite, ça vaut le coup
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/ansible.1507888176.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact