Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Ansible
  3. Tests Ansible
Extrait - Ansible Gérez la configuration de vos serveurs et le déploiement de vos applications (3e édition)
Extraits du livre
Ansible Gérez la configuration de vos serveurs et le déploiement de vos applications (3e édition)
2 avis
Revenir à la page d'achat du livre

Tests Ansible

Objectifs du chapitre et prérequis

Précédemment, vous avez abordé la mise en place d’un vérificateur de syntaxe (ansible-lint). Ce type d’outil est relativement intéressant afin de vérifier qu’aucune erreur de syntaxe ne s’est glissée dans un playbook.

Dans ce qui va suivre, les capacités de l’outil Ansible Lint seront approfondies puis l’accent sera mis sur la mise en place de tests plus poussés avec Molecule.

Linter Ansible

1. Contexte

L’outil ansible-lint a été abordé plus tôt lors de la présentation de Git. Par défaut, ce dernier vérifie certaines règles prédéfinies. Ces règles permettent de vérifier indifféremment :

  • la structure du YAML ;

  • la présence du champ name sur les tâches ;

  • l’utilisation des champs become à la place de sudo ;

  • etc.

2. Lancement de l’analyse

Le lancement de l’analyse d’un playbook se fait à l’aide de la commande ansible-lint suivie du playbook à analyser. Ici, un exemple de lancement avec le playbook install-mariadb.yml des chapitres précédents :

$ ansible-lint install-mariadb.yml 

Si rien n’est spécifié, la commande ne renverra aucune information. L’ajout de l’option -v permettra d’avoir quelques informations supplémentaires sur les opérations réalisées. Ci-dessous la sortie récupérée lors de l’ajout de cette option :

WARNING  Overriding detected file kind 'yaml' with 'playbook' for  
given positional argument: install-mariadb.yml 
WARNING  Listing 13 violation(s) that are fatal 
[...] 
                Rule Violation Summary 
count tag               profile    rule associated tags 
    2 yaml[colons]      basic      formatting, yaml 
    3...

Présentation de Molecule

1. Contexte

L’outil Linter d’Ansible permet de repérer les erreurs de syntaxe et de contrôler - dans une certaine mesure - la qualité des playbooks et des rôles produits. Malgré tout, rien ne remplace le lancement d’un playbook pour tester que tout fonctionne. Molecule est là pour automatiser ce processus d’installation et de vérification.

Pour fonctionner, Molecule s’appuie sur Ansible Galaxy (qui a été évoqué rapidement dans le chapitre sur les playbooks, rôles et notions avancées). Il étend cet outil afin d’y ajouter des fonctions pour faciliter le lancement de tests. On retrouve notamment les capacités suivantes :

  • Création de scénarios de test.

  • Utilisation de pilotes permettant la création d’environnement de tests (Podman, Docker, Vagrant, etc.).

  • Intégration de plusieurs outils de vérification (notamment yamllint et ansible-lint).

2. Prérequis et installation de Molecule

Afin de pouvoir fonctionner correctement, Molecule s’appuie sur de nombreux outils. Une solution recommandée est de simuler l’infrastructure à l’aide de conteneurs. Ce type de solution est simple et surtout léger à mettre en œuvre.

À cette fin, l’utilisateur dispose de plusieurs choix. Dans ce qui va suivre, l’accent sera mis sur l’utilisation de Podman même si quelques indications seront également données pour la mise en place de Docker.

Les autres outils nécessaires seront la commande ansible, l’outil yamllint ainsi que ansible-linter.

Molecule...

Utilisation de Molecule

Molecule est en place ainsi que le moteur de conteneurs. La suite de l’exercice va reprendre le rôle d’installation d’Apache des chapitres précédents afin d’y ajouter un jeu de tests.

1. Fichier de configuration molecule.yml

La commande molecule à son lancement va chercher le fichier molecule.yml dans un sous-répertoire du répertoire molecule (molecule/*/molecule.yml). Par convention, le fichier molecule/default/molecule.yml est souvent utilisé.

Ce fichier au format YAML permet de piloter le cycle de vie complet du lancement des tests.

Ci-dessous l’ensemble des champs disponibles :

  • dependency : gestionnaire des dépendances (Galaxy par défaut)

  • driver : gestionnaire de machines virtuelles (ou containers)

  • lint : nom de l’outil de vérification YAML

  • plateforms : liste des machines virtuelles/containers de tests

  • provisioner : mécanisme permettant de créer les machines virtuelles/containers

  • verifier : outil de vérification des actions réalisées par Ansible

2. Création d’un rôle Apache

a. Initialisation du rôle

Afin d’intégrer le rôle d’installation d’Apache, un rôle vide va être initialisé. Pour cela, la commande molecule sera lancée avec les options suivantes :

  • Les instructions init role suivies d’un contexte et du nom du rôle séparés par un point (eni.apache par exemple) ainsi que l’option --driver-name suivie du pilote de test à utiliser (podman ou docker).

Ci-dessous la commande complète à lancer dans le cas de l’utilisation de Podman :...