Automatisation hautement efficace avec Ansible AWX

Êtes-vous fatigué de lancer manuellement des playbooks et des commandes Ansible à chaque fois sur votre contrôleur hôte Ansible? Pourquoi ne pas utiliser une interface web et faciliter votre vie avec Ansible AWX?

AWX est une application web open source sponsorisée par Red Hat qui fournit une interface utilisateur et une API pour effectuer toutes les tâches Ansible. Et dans ce tutoriel, vous apprendrez à installer Ansible AWX sur une machine Ubuntu et à gérer des inventaires à l’aide d’Ansible AWX.

Relevez votre niveau d’automatisation avec Ansible AWX dès aujourd’hui!

Prérequis

Ce tutoriel comprend des instructions étape par étape. Si vous souhaitez suivre, assurez-vous d’avoir les éléments suivants en place:

  • Docker – Ce tutoriel utilise Docker v19.03.11 sur une machine avec la version Ubuntu 20.04.4 LTS.
  • Python v3.6 ou une version ultérieure doit être installé sur votre machine hôte Ansible Controller – Ce tutoriel utilise Python v3.8.10.
  • A GitHub account with one private and one public repository created in GitHub that you will use to store Ansible Playbook.

Installation des dépendances et configuration d’Ansible AWX

Ansible AWS a été la base de la création de Ansible Tower. Ansible AWX rend l’utilisation d’Ansible plus confortable pour les équipes informatiques pour les tests ; dans un laboratoire, en développement, ou dans d’autres environnements de POC.

Étant donné qu’Ansible AWS n’est pas installé par défaut sur votre système Linux, vous devrez d’abord installer Ansible AWS afin de l’exécuter en tant que conteneur multiple à l’aide du playbook Ansible.

1. Exécutez chaque commande ci-dessous pour mettre à jour les packages de votre système et installer le plugin docker-compose.

# Mettre à jour les packages
sudo apt-get update
# Installer Docker Compose
sudo apt-get install docker-compose-plugin
Updating System Packages and Installing docker-compose

2. Ensuite, exécutez la commande suivante pour vérifier la version de Docker Compose installée sur votre machine.

docker compose version

La sortie ci-dessous montre que la dernière version de Docker Compose, v2.5.0, est installée, confirmant que Docker Compose est correctement installé.

Verifying Docker Compose Version

3. Exécutez chaque commande ci-dessous pour installer les packages en tant que prérequis pour travailler avec Ansible AWX.

# Installe NodeJS car AWS dépend de NodeJS.
sudo apt install nodejs npm
# Installe Python3, qui exécute plus tard le playbook Ansible.
sudo apt install python3-pip git pwgen unzip
# Installe requests pour vous permettre d'envoyer facilement des requêtes HTTP/1.1.
sudo pip3 install requests==2.22.0 docker-compose==1.29.2
Installing npm Software
Installing Python
Installing Requests

4. Maintenant, exécutez les commandes suivantes pour télécharger (wget) l’archive du package AWX depuis le dépôt Git public, puis décompressez le package.

# Téléchargez l'archive du package AWX
wget https://github.com/ansible/awx/archive/17.1.0.zip
# Décompressez l'archive du package AWX
unzip 17.1.0.zip
Downloading the AWS Package from the Git Repository

5. Exécutez les commandes ci-dessous pour changer (cd) vers le répertoire d’installation d’AWX (awx-17.1.0/installer/) et générer le mot de passe aléatoire (pwgen).

Votre répertoire d’installation d’AWX (awx-17.1.0/installer/) peut différer en fonction de la version d’Ansible AWX installée sur votre machine.

cd awx-17.1.0/installer/
pwgen -N 1 -s 30

Prenez note du mot de passe généré car vous en aurez besoin comme clé secrète dans la console AWX.

Generating a Random Password

6. Enfin, dans votre éditeur de texte, ouvrez le fichier inventory dans le répertoire d’installation d’AWX (awx-17.1.0/installer/). Le fichier inventory contient les configurations d’AWX, qui seront utilisées lors de la connexion à l’interface utilisateur AWX.

Dans le fichier d’inventaire, changez la valeur de admin_password en password et de secret_key avec le mot de passe aléatoire que vous avez généré à l’étape cinq.

Updating Credentials of Ansible AWX in the Inventory File

Installation et Démarrage d’Ansible AWX avec le Playbook Ansible

Vous avez configuré correctement Ansible AWX, et maintenant il est temps de l’installer en utilisant un playbook Ansible (install.yml). Le playbook Ansible install.yml est fourni avec le package Ansible AWX que vous avez extrait. Ce playbook contient des tâches pour exécuter des commandes afin de construire une image Docker et exécuter plusieurs conteneurs.

1. Invoquez la commande ansible-playbook ci-dessous pour exécuter le playbook Ansible install.yml.

ansible-playbook -i inventory install.yml 

Ci-dessous, vous pouvez voir que certaines tâches ont changé d’état, indiquant que l’hôte AWX n’était pas dans le bon état et a été modifié pour exécuter la commande.

En revanche, d’autres tâches affichent plutôt un état « ok », ce qui indique qu’elles ne nécessitent aucun changement.

Executing the Ansible Playbook (install.yml)

2. Ensuite, exécutez la commande docker ci-dessous pour répertorier tous les conteneurs Docker disponibles.

docker ps

La sortie ci-dessous montre les conteneurs en cours d’exécution (awx_tasks, awx_redis, awx_web et awx_postgres), confirmant ainsi que AWX est correctement installé.

Verifying all Docker Containers

3. Enfin, ouvrez votre navigateur préféré et accédez à Ansible AWX (https://AWX-HOST-IP:80). Assurez-vous de remplacer AWX-HOST-IP par l’adresse IP de votre hôte Ansible. Si tout se passe bien, vous verrez la page de connexion Ansible AWX sur votre navigateur, comme indiqué ci-dessous.

Entrez votre nom d’utilisateur (admin) et votre mot de passe (password), puis cliquez sur Connexion pour accéder au tableau de bord Ansible AWX. Ces identifiants sont ceux que vous avez configurés lors de la dernière étape de la section « Installation des dépendances et configuration d’Ansible AWX ».

AWX installe automatiquement un certificat auto-signé pour la communication HTTPS, ce qui peut nécessiter son acceptation dans votre navigateur.

Accessing the Ansible AWX Dashboard UI

Après vous être connecté, votre navigateur sera redirigé vers le tableau de bord AWX, comme indiqué ci-dessous.

Viewing the AWX Dashboard

Création et gestion des inventaires

Maintenant que vous avez accès au tableau de bord Ansible AWX, vous pouvez travailler sur l’automatisation des tâches. Dans ce tutoriel, vous allez gérer plusieurs composants Ansible dans le tableau de bord Ansible AWX. Mais d’abord, vous devrez créer et gérer des inventaires.

1. Sur le tableau de bord AWX, cliquez sur « Inventaires » pour ouvrir la liste des inventaires stockés dans Ansible AWX. Par défaut, un inventaire de démonstration est présent, comme indiqué ci-dessous.

Ignorez l’inventaire de démonstration et cliquez sur le bouton déroulant « Ajouter » pour créer un nouvel inventaire.

Creating a New Inventory

2. Ensuite, spécifiez les paramètres suivants sur la page « Créer un nouvel inventaire » pour configurer votre premier inventaire dans le tableau de bord Ansible AWX :

  • NomATA Learning (Vous pouvez donner le nom que vous souhaitez).
  • Description – Décrivez l’inventaire, c’est facultatif mais cela aide à identifier les inventaires parmi d’autres.
  • Organisation – Choisissez l’option par défaut. AWX crée une organisation par défaut, mais vous pouvez également créer la vôtre.

Une fois que vous avez spécifié tous les détails ci-dessus, cliquez sur le bouton « Enregistrer » comme indiqué ci-dessous.

Creating an Inventory in the Ansible AWX Dashboard

3. Enfin, cliquez sur l’onglet Inventaires (panneau de gauche) pour vérifier que l’inventaire nouvellement créé (ATA Learning) existe, comme indiqué ci-dessous.

Verifying the Inventory in the Ansible AWX Dashboard

Création et exécution des tâches Ansible

Vous avez configuré avec succès votre inventaire, mais il est inutile pour le moment à moins que vous ne l’appeliez avec une tâche. Une tâche est une instance de AWX lançant un playbook Ansible contre l’inventaire d’un hôte. Et bien sûr, avant de pouvoir appeler une tâche, vous devez d’abord en créer une:

Pour créer une tâche Ansible et exécuter une tâche Ansible:

1. Créez un fichier YML dans le dépôt GitHub et copiez/collez le playbook ci-dessous. Vous pouvez nommer le fichier YML comme vous le souhaitez, mais ce tutoriel utilise le playbook appelé ata.yml.

---
  - name: "Playing with Ansible."
# Le playbook Ansible s'exécutera sur l'hôte local où AWX est installé
    hosts: localhost
    connection: local
    tasks:
# La tâche ci-dessous exécutera la liste des répertoires et fichiers présents
    - name: "just execute a ls -lrt command"
      shell: "ls -lrt"
      register: "output"
# La sortie de la tâche ci-dessus sera affichée à l'écran
    - debug: var=output.stdout_lines
Creating a YML File in the Git Repository

2. Accédez à votre tableau de bord Ansible AWX et cliquez sur Projets dans le panneau de gauche pour accéder à la liste des projets disponibles. Vous aurez besoin d’un projet avant de pouvoir créer une tâche.

Ignorez le projet de démo et cliquez sur le bouton Ajouter pour créer un nouveau projet.

Initializing Adding a New Project

3. Fournissez les détails du nouveau projet avec les éléments suivants et cliquez sur Enregistrer pour sauvegarder le nouveau projet :

  • Nom – Le nom du projet peut être celui que vous souhaitez, mais ce tutoriel définit le nom du projet à myproject.
  • Description – Comme pour votre inventaire, ajouter une description est optionnel mais aide à identifier les projets les uns des autres.
  • Organisation – Similaire à votre inventaire, choisissez Default pour l’organisation.
  • Type de Justificatif de Contrôle de Source – Choisissez Git comme votre SCM.
  • URL de Contrôle de Source – Spécifiez l’URL GitHub de votre code source.
Creating a New Project

4. Après avoir créé un projet, cliquez sur Modèles dans la barre latérale gauche pour accéder à tous les modèles disponibles, comme montré ci-dessous.

Sur la page des Modèles, cliquez sur le bouton déroulant Ajouter, et choisissez l’option Ajouter un modèle de travail pour créer un modèle.

Creating a New Job Template

5. Maintenant, spécifiez les détails ci-dessous comme suit, et cliquez sur Enregistrer en bas pour sauvegarder le nouveau modèle de travail :

  • Nom – Définissez le nom du modèle de travail comme vous le souhaitez, mais ce tutoriel définit le nom du modèle de travail à myjob.
  • Type de Travail – Définissez l’action que le travail effectuera (Run).
  • Projet – Choisissez le projet que vous avez créé à l’étape trois (myproject).
  • Inventaire – Choisissez l’inventaire que vous avez créé à l’étape deux de la section « Création et Gestion des Inventaires » (ATA Learning).
  • Guide – Choisissez le guide que vous avez créé à l’étape un de la section « Création et exécution des tâches Ansible » (ata.yml).
Specifying Job Template Details

6. Enfin, sur la page des modèles, lancez la tâche nouvellement créée avec ce qui suit :

  • Cliquez sur la tâche (myjob) pour accéder à la page d’informations de la tâche.
  • Rendez-vous dans l’onglet Détails, où vous verrez les détails de la tâche.
  • Cliquez sur Lancer en bas de la page pour démarrer la tâche.
Launching the Newly-created Job

Comme vous pouvez le voir ci-dessous, la tâche s’est exécutée avec succès sur localhost et a répertorié tous les fichiers dans le répertoire spécifié dans le guide (ata.yml).

Executing the Job Template

Conclusion

Dans ce tutoriel, vous avez tiré parti de l’outil open-source Ansible AWX pour gérer les guides Ansible, les inventaires et les tâches avec un seul tableau de bord UI. Vous avez abordé l’exécution d’une tâche Ansible, telle que la liste des fichiers dans un répertoire particulier.

Maintenant que vous avez une bonne connaissance du logiciel Ansible AWX, seriez-vous prêt à exécuter tous vos futurs guides Ansible en utilisant Ansible AWX ? Peut-être voudriez-vous automatiser des tâches en ajoutant des tâches cron ?

Source:
https://adamtheautomator.com/ansible-awx/