Skip to main content

Généralités | Ansible

Introduction 

michael dehaan 2012

 

Utilisation

Ansible est un moteur open source qui a de multiples buts comme :

  • l'automatisation du provisionnement
  • gestion de configuration et du déploiement d'applications
  • l'orchestration de processus informatiques

Cette techno permet donc d'installer des logiciels, d'automatiser les tâches quotidiennes, de provisionner des composants réseau et d'infrastructure, d'améliorer le niveau de sécurité et de conformité, d'appliquer des correctifs système et d'orchestrer des workflows  complexes.

Fonctionnement

Modules

Ansible se connecte aux nœuds (ou aux hôtes) et leur envoie des petits programme (modules). Ces programmes représentent les modèles de ressources pour l'état souhaité d'un système. Ansible exécute les modules, puis les supprime.

Sans ces modules, il faut recourir à des commandes et scripts "ad hoc" pour accomplir chaque tâche. Ansible contient des modules  intégrés qui permettent d'automatiser des tâches. Il est également possible de créer des modules dans n'importe quel langage capable de renvoyer une réponse au format JSON (Python, bash, PowerShell, Ruby)

Automatisation sans agent

Ansible est une technologie sans agent : elle n'installe aucun logiciel sur les nœuds qu'elle gère. Elle lit les informations concernant les machines que vous souhaitez gérer à partir d'un inventaire. Ansible dispose d'un fichier d'inventaire par défaut, mais il est possible d'en créer un manuellement pour y indiquer les serveurs à gérer.

Pour se connecter aux serveurs et exécuter des tâches, Ansible utilise le protocole SSH. Par défaut, Ansible utilise des clés SSH avec ssh-agent et se connecte aux machines distantes à l'aide de votre nom d'utilisateur actif. Pas besoin d'une connexion root, vous pouvez vous connecter avec le compte de n'importe quel utilisateur, puis utiliser la commande su ou sudo pour passer à un autre compte utilisateur.

Une fois connectée, la technologie Ansible transfère les modules requis par votre commande ou playbook Ansible vers les machines distantes pour leur exécution. Ansible utilise des modèles YAML lisibles par l'homme. Ainsi, les utilisateurs peuvent automatiser des tâches répétitives sans avoir à apprendre un langage de programmation avancé.

Ansible pour des commandes ad hoc

Ansible peut également servir à exécuter des commandes ad hoc pour automatiser une tâche sur un ou plusieurs nœuds gérés. Il faut alors exécuter une commande ou appeler un module directement à partir de l'interface en ligne de commande. Vous n'avez pas besoin de playbook et vous ne pouvez pas réutiliser les commandes ad hoc. Cette méthode convient aux tâches ponctuelles, mais pour les processus réguliers ou plus complexes, vous devez utiliser un playbook Ansible.

playbook

Les playbooks Ansible servent à orchestrer des processus informatiques. Un playbook est un fichier YAML (.yml ou .yaml) qui contient un ou plusieurs plays et qui permet de définir l'état souhaité d'un système, tandis qu'un module Ansible est un script autonome qui peut être utilisé à l'intérieur d'un playbook Ansible.

Les plays sont un jeu de tâches c'est-à-dire une série de tâches à exécuter sur les hôtes sélectionnés dans le fichier d'inventaire Ansible. Les tâches sont exécutées dans l'ordre de déclaration.

Pendant son exécution, Ansible suit l'état du système. S'il analyse un système et détecte une incohérence entre la description du système dans le playbook et son état réel, il fait les ajustements nécessaires pour que l'état réel corresponde à celui du playbook.

Ansible inclut un mode de vérification, qui vous permet de confirmer les playbooks et commandes ad hoc avant qu'un changement soit effectué sur le système. Ainsi, vous pouvez voir ce qu'Ansible modifierait, sans pour autant faire la modification. Les gestionnaires Ansible servent à exécuter une tâche spécifique uniquement après un changement du système. Ils sont déclenchés par des tâches et exécutés une seule fois, après tous les autres plays du playbook.

les variables

Elles sont un moyen d'adapter l'exécution des playbooks aux différences entre les systèmes, comme les versions des paquets ou les chemins de fichiers. Ansible permet d'exécuter des playbooks sur plusieurs systèmes avec une seule commande. Les variables servent à gérer les divergences entre ces systèmes. Elles peuvent être définies dans des playbooks, dans un inventaire, dans des fichiers ou rôles réutilisables, ou au niveau de la ligne de commande. Les variables respectent les règles de priorité qui définissent l'ordre dans lequel elles s'appliquent.

Les rôles

Ils correspondent à un type spécifique de playbook totalement autonome et portable. Ils regroupent les tâches, les variables, les modèles de configuration et tous les autres fichiers requis pour une orchestration complexe. Il peut y avoir plusieurs rôles dans une même collection, ce qui simplifie le partage des contenus via les plateformes Automation Hub et Ansible Galaxy.

Les collections

Les collections renvoient à un format de distribution des contenus Ansible. Chacune peut comprendre des playbooks, des rôles, des modules, des plug-ins et de la documentation, ce qui facilite le partage des processus automatisés et l'utilisation des contenus créés par d'autres équipes. Ces collections sont triées par domaine, ce qui demande moins de travail en amont pour trouver et combiner différents rôles et modules.