Ansible est un outil d’automatisation qui repose sur le paradigme de programmation déclaratif, permettant de décrire l’état d’un système en YAML.

Ansible communique avec les hôtes par le biais de SSH, copie temporairement un module python sur ces derniers pour opérer, et récupère le résultat.

Cœur fonctionnel

Un poste de contrôle, disposant de Python et d’ansible-core, un applicatif Python, exécute les playbooks à destination des machines cibles sur lesquelles est installé Python 3.

Push SSH

La communication entre le noeud de contrôle et les noeuds managé, connus sous la base de l’inventaire, est unilatérale. En l’occurrence, cette dernière s’opère en trois temps :

  1. Connexion
  2. Téléchargement des modules
  3. Exécution et rendu JSON des résultats

Le control node

Il s’agit de son PC personnel, d’un machine de rebond, ou-bien d’un serveur (bastion). On y retrouve l’ensemble des éléments de la panoplie technique d’Ansible.

  • ansible-core parse les playbooks, négocie la connexion SSH, sérialise les modules, et interprète les retours JSON. On l’installe :
    • pipx : pipx install --include-deps ansible
    • gestionnaire de paquet natif (dnf, apt, pacman,…).
    • par le biais de l’Environnement d’Exécution (embarqué).
  • ansible-navigator est l’interface d’Ansible Automation Platform 2.0 qui exécute les playbooks au sein d’un conteneur.
  • L’Execution Environment (EE) est une image conteneur OCI encapsulant Ansible et ses dépendances.
  • L’inventaire décrit de façon statique, sous la forme d’un fichier YAML, l’ensemble des hôtes de l’infrastructure. Conjointement à un plugin approprié, il peut être dynamique.
  • Les collections sont les paquets de modules utilisés au sein des taches. Il est possible d’en installer via ansible-galaxy

Les managed nodes

Prérequis :

  • Le service sshd est actif et le port 22 ouvert (firewall-cmd --permanent --add-service=ssh).
  • Un compte utilisateur dédié avec sudo en NOPASSWD:ALL, et la clé publique du control node présente dans ansible/.ssh/authorized_keys.
  • Python 3

Info

Si Python 3 est absent, Ansible passe en mode raw et exécute des commandes shell brutes.

Workflow