8.4. Ansible & SSH

En fonction de la méthode d’authentification sur les serveurs et d’élevation de privilège, il faut rajouter des options aux lignes de commande ansible. Ces options seront à rajouter pour toutes les commandes ansible du document .

Pour chacune des 3 sections suivantes, vous devez être dans l’un des cas décrits

8.4.1. Authentification du compte utilisateur utilisé pour la connexion SSH

Pour le login du compte utilisateur, voir la section Informations plate-forme.

8.4.1.1. Par clé SSH avec passphrase

Dans le cas d’une authentification par clé avec passphrase, il est nécessaire d’utiliser ssh-agent pour mémoriser la clé privée. Pour ce faire, il faut :

  • exécuter la commande ssh-agent <shell utilisé> (exemple ssh-agent /bin/bash) pour lancer un shell avec un agent de mémorisation de la clé privée associé à ce shell
  • exécuter la commande ssh-add et renseigner la passphrase de la clé privée

Vous pouvez maintenant lancer les commandes ansible comme décrites dans ce document.

A noter : ssh-agent est un démon qui va stocker les clés privées (déchiffrées) en mémoire et que le client SSH va interroger pour récupérer les informations privées pour initier la connexion. La liaison se fait par un socket UNIX présent dans /tmp (avec les droits 600 pour l’utilisateur qui a lancé le ssh-agent). Cet agent disparaît avec le shell qui l’a lancé.

8.4.1.2. Par login/mot de passe

Dans le cas d’une authentificatioon par login/mot de passe, il est nécessaire de spécifier l’option –ask-pass (ou -k en raccourci) aux commandes ansible ou ansible-playbook de ce document .

Au lancement de la commande ansible (ou ansible-playbook), il sera demandé le mot de passe

8.4.1.3. Par clé SSH sans passphrase

Dans ce cas, il n’y a pas de paramétrage particulier à effectuer.

8.4.2. Authentification des hôtes

Pour éviter les attaques de type MitM, le client SSH cherche à authentifier le serveur sur lequel il se connecte. Ceci se base généralement sur le stockage des clés publiques des serveurs auxquels il faut faire confiance (~/.ssh/known_hosts).

Il existe différentes méthodes pour remplir ce fichier (vérification humaine à la première connexion, gestion centralisée, DNSSEC). La gestion de fichier est hors périmètre Vitam mais c’est un pré-requis pour le lancement d’ansible.

8.4.3. Elevation de privilèges

Une fois que l’on est connecté sur le serveur cible, il faut définir la méthode pour accéder aux droits root

8.4.3.1. Par sudo avec mot de passe

Dans ce cas, il faut rajouter les options --ask-sudo-pass

Au lancement de la commande ansible (ou ansible-playbook), il sera demandé le mot de passe demandé par sudo

8.4.3.2. Par su

Dans ce cas, il faut rajouter les options --become-method=su --ask-su-pass

Au lancement de la commande ansible (ou ansible-playbook), il sera demandé le mot de passe root

8.4.3.3. Par sudo sans mot de passe

Il n’y a pas d’option à rajouter (l’élévation par sudo est la configuration par défaut)

8.4.3.4. Déjà Root

Dans ce cas, il n’y a pas de paramétrages supplémentaires à effectuer.