Contactez-nous

Prérequis système (Python, OpenSSH client/server)

Découvrez les prérequis essentiels pour Ansible : l'installation de Python sur le noeud de contrôle et les noeuds gérés, ainsi que la configuration d'OpenSSH client/server pour une communication sécurisée et efficace.

Les fondations logicielles : Python et OpenSSH au coeur d'Ansible

Pour qu'Ansible puisse fonctionner correctement et interagir avec votre infrastructure, certains composants logiciels doivent être présents et configurés à la fois sur le noeud de contrôle (la machine d'où vous lancez Ansible) et sur les noeuds gérés (les machines cibles de vos automatisations). Les deux piliers de ces prérequis sont Python, le langage dans lequel Ansible est écrit et qui exécute les modules sur les cibles, et OpenSSH, le protocole de communication sécurisé privilégié par Ansible pour les systèmes de type Unix.

S'assurer que ces prérequis sont satisfaits avant de commencer l'installation d'Ansible ou la gestion des noeuds est une étape cruciale pour éviter des problèmes de compatibilité ou de connectivité par la suite. Cette section détaille les exigences spécifiques pour Python et OpenSSH sur chaque type de noeud.

Python : le moteur d'Ansible et de ses modules

Sur le Noeud de Contrôle :

Ansible est un programme Python. Par conséquent, une version compatible de Python doit être installée sur la machine qui servira de noeud de contrôle. Ansible supporte actuellement les versions suivantes de Python :

  • Python 3.8 et versions ultérieures (recommandé pour les dernières versions d'Ansible Core).
  • Python 2.7 était supporté par les versions plus anciennes d'Ansible (jusqu'à Ansible 2.10), mais son support est maintenant obsolète et il est fortement conseillé de migrer vers Python 3.

La plupart des distributions Linux modernes et macOS sont livrées avec Python 3 préinstallé ou facilement installable via leur gestionnaire de paquets. Pour vérifier la version de Python installée, vous pouvez utiliser les commandes :

python3 --version
# ou si python pointe vers Python 3
python --version

Il est également recommandé d'utiliser des environnements virtuels Python (avec `venv` ou `virtualenv`) pour installer Ansible et ses dépendances, afin d'isoler votre installation Ansible des autres applications Python du système et d'éviter les conflits de versions de paquets.

# Exemple de création et activation d'un environnement virtuel
python3 -m venv ansible_env
source ansible_env/bin/activate
# Maintenant, installez Ansible dans cet environnement
pip install ansible
Sur les Noeuds Gérés :

Les noeuds gérés ont également besoin d'un interpréteur Python pour qu'Ansible puisse y exécuter les modules (qui sont essentiellement des scripts Python). La version de Python requise sur les noeuds gérés dépend des modules que vous utilisez, mais en général :

  • Python 2.7 ou Python 3.5 et versions ultérieures sont généralement suffisants pour la majorité des modules Ansible.
  • Pour les systèmes très anciens, Python 2.6 pouvait fonctionner avec certaines limitations, mais cela devient de plus en plus rare.
  • Certains modules plus récents ou spécifiques à des plateformes peuvent avoir des exigences Python plus strictes (par exemple, nécessiter Python 3.6+).

Ansible tente de découvrir automatiquement l'interpréteur Python approprié sur le noeud géré. Par défaut, il cherche `/usr/bin/python`. Si votre Python est installé ailleurs ou si vous avez plusieurs versions et souhaitez en spécifier une, vous pouvez définir la variable d'inventaire `ansible_python_interpreter` pour un hôte ou un groupe :

[my_servers]
server1.example.com ansible_python_interpreter=/usr/bin/python3.9
server2.example.com ansible_python_interpreter=/opt/rh/python38/root/usr/bin/python3

Sur les systèmes Linux minimalistes ou certains conteneurs, il se peut que Python ne soit pas installé par défaut. Ansible fournit un module `raw` qui peut être utilisé pour installer Python via une commande Ad-Hoc avant que d'autres modules puissent fonctionner :

# Exemple pour un système basé sur Debian/Ubuntu
ansible my_new_server -m raw -a "apt-get update && apt-get install -y python3" -u root --ask-pass

Pour les noeuds gérés Windows, Python n'est pas directement utilisé par Ansible. La communication se fait via WinRM et les modules sont souvent écrits en PowerShell.

OpenSSH : le canal de communication sécurisé

Sur le Noeud de Contrôle :

Le noeud de contrôle Ansible a besoin d'un client OpenSSH fonctionnel pour se connecter aux noeuds gérés de type Linux/Unix. Pratiquement toutes les distributions Linux et macOS incluent un client OpenSSH par défaut (`ssh`). Vous pouvez vérifier sa présence avec :

ssh -V

Il est crucial que ce client SSH soit configuré pour permettre des connexions efficaces et sécurisées, notamment via l'utilisation de clés SSH pour une authentification sans mot de passe (nous y reviendrons en détail). Des configurations dans `~/.ssh/config` peuvent également simplifier la gestion des connexions.

Sur les Noeuds Gérés (Linux/Unix) :

Les noeuds gérés de type Linux ou Unix doivent exécuter un serveur OpenSSH (`sshd`) pour qu'Ansible puisse s'y connecter. Le serveur SSH doit être :

  • Installé et en cours d'exécution.
  • Configuré pour autoriser l'authentification par clé publique (option `PubkeyAuthentication yes` dans `/etc/ssh/sshd_config`, généralement activée par défaut).
  • Accessible sur le réseau depuis le noeud de contrôle (pare-feu configuré pour autoriser les connexions sur le port SSH, par défaut 22).

Vous pouvez vérifier si le service `sshd` est actif sur un noeud géré avec une commande comme `systemctl status sshd` ou `service sshd status`.

Pour les noeuds gérés Windows, Ansible n'utilise pas SSH par défaut, mais plutôt WinRM (Windows Remote Management). WinRM doit être activé et configuré sur les hôtes Windows pour permettre les connexions PowerShell distantes. Des guides spécifiques existent pour la configuration de WinRM pour Ansible. Il est cependant possible d'utiliser SSH avec Windows si un serveur SSH y est installé et configuré (par exemple, OpenSSH Server pour Windows), en spécifiant `ansible_connection=ssh` dans l'inventaire pour ces hôtes.

En résumé, s'assurer de la présence et de la bonne configuration de Python et d'OpenSSH (ou WinRM pour Windows) est une première étape incontournable pour un environnement Ansible fonctionnel. Ces composants constituent la base sur laquelle reposent toutes les communications et exécutions de tâches.