Maîtrisez l'Automatisation : Installer et Configurer AWX sur Kubernetes

L'automatisation est la pierre angulaire de toute infrastructure informatique moderne. Cependant, à mesure que les environnements grandissent, la gestion des playbooks Ansible, des inventaires et des accès peut rapidement devenir un défi. Les scripts s'éparpillent, les informations d'identification sont mal gérées et la visibilité sur les tâches d'automatisation exécutées devient quasi nulle. C'est précisément ce chaos que AWX vient résoudre.

AWX est le projet open source qui constitue la base de Red Hat Ansible Automation Platform. Il fournit une interface web centralisée et une API RESTful puissante pour gérer votre automatisation Ansible à grande échelle. Imaginez un tableau de bord unique pour planifier des tâches, gérer les accès via un contrôle d'accès basé sur les rôles (RBAC), et visualiser l'historique de chaque exécution de playbook.

Dans ce guide complet, nous allons plonger au cœur de la méthode d'installation moderne et recommandée pour AWX : l'opérateur Kubernetes. Nous vous guiderons pas à pas, de la préparation de votre cluster à la configuration de votre première tâche d'automatisation, en vous fournissant les bonnes pratiques et les astuces pour éviter les pièges courants.

Prérequis Techniques

Avant de commencer, assurez-vous de disposer des éléments suivants. Ce guide suppose une familiarité de base avec les concepts de conteneurisation et d'orchestration.

  • Un cluster Kubernetes fonctionnel. Pour un environnement de test ou de développement, des solutions locales comme Minikube, Kind ou k3d sont parfaites. Pour la production, un cluster managé (EKS, GKE, AKS) ou auto-hébergé est nécessaire.
  • L'outil de ligne de commande kubectl configuré pour communiquer avec votre cluster.
  • L'outil kustomize (v3.8.0+). Il est souvent inclus dans les versions récentes de kubectl. Vérifiez avec kubectl version.
  • Un client git pour cloner les dépôts nécessaires.
  • Un dépôt Git personnel contenant au moins un playbook Ansible simple. Cela sera essentiel pour tester notre configuration.

I. Comprendre AWX et son Écosystème

Avant de nous lancer dans l'installation, il est crucial de bien saisir ce qu'est AWX et pourquoi la méthode d'installation via un opérateur Kubernetes est aujourd'hui la norme.

A. Qu'est-ce que AWX ?

Si Ansible est le moteur qui exécute vos tâches d'automatisation, AWX en est le cockpit et la tour de contrôle. Il ne remplace pas Ansible, mais l'augmente en lui ajoutant des fonctionnalités essentielles pour une utilisation en entreprise :

  • Interface Web Centralisée : Fini les lancements de playbooks depuis le terminal d'un administrateur. Tout se fait via une interface graphique claire.
  • Contrôle d'Accès Basé sur les Rôles (RBAC) : Définissez précisément qui a le droit de voir, d'utiliser ou de modifier les inventaires, les projets et les modèles de tâches.
  • Planification des Tâches (Scheduling) : Exécutez des playbooks à des heures précises (par exemple, pour des rapports de conformité nocturnes ou des maintenances le week-end).
  • API RESTful Complète : Intégrez AWX à vos autres outils (CI/CD, ITSM...) pour déclencher des automatisations de manière programmatique.
  • Gestion des Identifiants : Stockez de manière sécurisée vos clés SSH, mots de passe, et jetons d'API.
  • Journaux et Historiques : Conservez une trace de chaque tâche exécutée, son statut (succès/échec) et sa sortie console complète pour l'audit et le dépannage.

En résumé, AWX transforme Ansible d'un outil de ligne de commande puissant à une plateforme d'automatisation complète et auditable.

B. Pourquoi utiliser l'Opérateur AWX ?

Dans le passé, AWX pouvait être installé via Docker Compose. Cette méthode est aujourd'hui dépréciée et non recommandée. L'écosystème Kubernetes s'est imposé comme la plateforme de choix pour faire tourner des applications complexes et résilientes, et AWX a suivi cette évolution.

L'Opérateur AWX est une application spécifique qui s'exécute dans votre cluster Kubernetes et qui gère le cycle de vie de votre instance AWX. Pensez-y comme un administrateur système robotisé pour AWX.

Les avantages sont considérables :

  1. Installation Simplifiée : Vous décrivez l'état désiré de votre instance AWX dans un simple fichier YAML, et l'opérateur se charge de créer tous les composants nécessaires (déploiements, services, volumes persistants, etc.).
  2. Mises à Jour Facilitées : Pour mettre à jour AWX, il suffit souvent de changer la version dans votre fichier de configuration. L'opérateur gère le processus de mise à niveau de manière contrôlée.
  3. Auto-réparation : Si un composant d'AWX (comme le pod web) plante, l'opérateur le détectera et le redémarrera automatiquement pour maintenir le service.
  4. Configuration Cohérente : L'opérateur garantit que votre déploiement suit les meilleures pratiques définies par l'équipe de développement d'AWX.

L'utilisation de l'opérateur est la méthode officiellement supportée et la plus robuste pour faire fonctionner AWX en 2025 et au-delà.

C. Architecture d'AWX sur Kubernetes

Lorsque vous déployez AWX avec l'opérateur, plusieurs Pods sont créés dans votre cluster, chacun avec un rôle spécifique :

  • awx-operator-controller-manager : C'est le pod de l'opérateur lui-même. Il surveille les ressources AWX et s'assure que l'état réel correspond à l'état que vous avez défini.
  • awx-web : Le pod qui sert l'interface web et l'API. C'est avec lui que les utilisateurs interagissent.
  • awx-task : Le "worker". C'est ce pod qui exécute les playbooks Ansible (ansible-playbook). Il peut y en avoir plusieurs pour augmenter la capacité d'exécution simultanée.
  • awx-postgres : AWX nécessite une base de données PostgreSQL pour stocker ses données (jobs, inventaires, utilisateurs, etc.). L'opérateur déploie une instance PostgreSQL dédiée.

Ces composants communiquent entre eux via les services internes de Kubernetes, formant une application distribuée et scalable.


II. Installation d'AWX avec l'Opérateur

Passons maintenant à la pratique. Nous allons déployer la dernière version stable de l'opérateur AWX et, à travers lui, une instance AWX.

Bien sûr, voici les étapes d'installation et de configuration d'AWX présentées dans un ordre séquentiel et résumé, correspondant au cheminement logique de l'article.


Phase 1 : Préparation de l'Environnement Kubernetes

  1. Vérifier les prérequis : S'assurer qu'un cluster Kubernetes est fonctionnel et que kubectl est configuré.

Créer un Namespace dédié : Isoler l'application AWX pour une gestion simplifiée.

kubectl create namespace awx

Phase 2 : Déploiement de l'Opérateur AWX

Vérifier le statut de l'opérateur : Confirmer que le pod de l'opérateur est en cours d'exécution (Running) avant de continuer.

kubectl get pods -n awx

Déployer l'opérateur : Appliquer les manifestes Kubernetes qui installent et démarrent l'opérateur dans le cluster.Bash

make deploy

Cloner le dépôt de l'opérateur : Récupérer les fichiers nécessaires pour le déploiement, en spécifiant la version stable la plus récente.

git clone -b 2.16.1 https://github.com/ansible/awx-operator.git
cd awx-operator

Phase 3 : Déploiement de l'Instance AWX

Surveiller la création des pods AWX : Attendre que les pods web, task, et postgres de l'instance soient tous à l'état Running.

kubectl get pods -n awx -w

Appliquer le manifeste : Envoyer la configuration au cluster pour que l'opérateur puisse commencer le travail.

kubectl apply -f awx-instance.yml -n awx

Créer le manifeste de l'instance AWX : Définir une ressource personnalisée (CRD) dans un fichier YAML pour demander à l'opérateur de créer une instance AWX.

# Fichier : awx-instance.yml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: my-awx-instance
spec: {}

Phase 4 : Accès et Connexion à l'Interface Web

  1. Se connecter : Ouvrir un navigateur sur http://localhost:8080 et se connecter avec l'utilisateur admin et le mot de passe récupéré.

Exposer le service AWX : Utiliser le port-forwarding de kubectl pour accéder à l'interface web depuis la machine locale.

kubectl port-forward -n awx svc/my-awx-instance-service 8080:80

Récupérer le mot de passe administrateur : Extraire le mot de passe initial du secret Kubernetes créé par l'opérateur.

kubectl get secret -n awx my-awx-instance-admin-password -o jsonpath="{.data.password}" | base64 --decode

Phase 5 : Configuration des Objets Fondamentaux dans AWX

  1. Créer un Identifiant (Credential) : Ajouter une clé SSH (ou un autre type d'identifiant) pour permettre à AWX de se connecter aux machines cibles.
  2. Créer un Inventaire (Inventory) : Définir un groupe de machines sur lesquelles les automatisations seront exécutées.
  3. Ajouter un Hôte (Host) : Ajouter au moins une machine cible à l'inventaire.
  4. Créer un Projet (Project) : Lier AWX à un dépôt Git contenant les playbooks Ansible et attendre la synchronisation.

Phase 6 : Création et Lancement de la Première Tâche

  1. Créer un Modèle de Tâche (Job Template) : Lier le Projet (playbook), l'Inventaire (hôte cible) et l'Identifiant (clé SSH).
  2. Lancer le Job Template : Exécuter le modèle pour démarrer la tâche d'automatisation.
  3. Vérifier le résultat : Suivre l'exécution en temps réel dans l'interface et confirmer que la tâche s'est terminée avec succès.

III. Configuration Initiale et Première Tâche d'Automatisation

Avoir une instance AWX qui tourne est une chose, l'utiliser en est une autre. Suivons les étapes essentielles pour rendre notre plateforme opérationnelle.

A. Accéder à l'interface web d'AWX

  1. Se connecter :
    Ouvrez votre navigateur web et allez à l'adresse http://localhost:8080.

Vous êtes maintenant connecté au tableau de bord d'AWX !

    • Utilisateur : admin
    • Mot de passe : Celui que vous avez récupéré à l'étape 1.

Accéder à l'interface via le port-forwarding :
Pour un accès rapide et simple depuis votre machine locale, le port-forwarding de kubectl est idéal. Il va rediriger un port local vers le port du service AWX dans le cluster.Ouvrez un nouveau terminal et lancez la commande suivante :

kubectl port-forward -n awx svc/my-awx-instance-service 8080:80

Laissez ce terminal ouvert.

Récupérer le mot de passe de l'administrateur :
L'opérateur a généré un mot de passe initial pour l'utilisateur admin et l'a stocké dans un secret Kubernetes.

kubectl get secret -n awx my-awx-instance-admin-password -o jsonpath="{.data.password}" | base64 --decode

Copiez ce mot de passe.

B. Configuration des Objets Fondamentaux

Pour exécuter un playbook, AWX a besoin de savoir : QUOI exécuter (le projet/playbook), l'exécuter (l'inventaire), et COMMENT s'y connecter (les identifiants).

  1. Créer une Organisation :
    Une organisation est le plus haut niveau de regroupement dans AWX. Par défaut, une organisation "Default" existe. Pour notre exemple, nous allons l'utiliser. Dans un cas réel, vous créeriez des organisations par équipe ou par projet (ex: "Équipe Réseau", "Projet X").
    • Dans le menu de gauche, allez dans Credentials et cliquez sur Add.
    • Nom : SSH Key Lab
    • Type d'identifiant : Machine
    • Clé privée SSH : Collez ici la clé privée SSH qui a accès à vos serveurs cibles. Assurez-vous d'inclure -----BEGIN OPENSSH PRIVATE KEY----- et -----END OPENSSH PRIVATE KEY-----.
    • Cliquez sur Save.
  2. Créer un Inventaire (Inventory) :
    L'inventaire est la liste des machines sur lesquelles vos playbooks s'exécuteront.
    • Allez dans Inventories et cliquez sur Add -> Add inventory.
    • Nom : Lab Servers
    • Organisation : Default
    • Cliquez sur Save.
    • Dans l'inventaire que vous venez de créer, allez dans l'onglet Hosts et cliquez sur Add.
    • Nom d'hôte : server1.example.com (ou l'IP/le nom DNS de votre machine de test).
    • Cliquez sur Save.
  3. Créer un Projet (Project) :
    Le projet pointe vers votre dépôt Git où se trouvent vos playbooks.AWX va immédiatement tenter de se synchroniser avec le dépôt. Vous pouvez voir une icône de statut à côté du projet. Attendez qu'elle passe au vert (succès).
    • Allez dans Projects et cliquez sur Add.
    • Nom : My Automation Project
    • Organisation : Default
    • Source Control Credential Type : Git
    • Source Control URL : https://github.com/votre-user/votre-repo-ansible.git (utilisez votre propre dépôt).
    • Laissez les autres options par défaut et cliquez sur Save.

Créer un Identifiant (Credential) :
Nous allons créer un identifiant de type "Machine" pour permettre à AWX de se connecter en SSH à nos serveurs.

Note de sécurité : AWX chiffre les identifiants dans la base de données. Pour une sécurité renforcée en production, il est possible d'intégrer AWX avec des solutions de gestion de secrets externes comme HashiCorp Vault.

C. Lancement de votre premier Modèle de Tâche (Job Template)

Le Modèle de Tâche (Job Template) est la ressource qui lie tout ensemble : le playbook d'un projet, un inventaire, et les identifiants nécessaires à son exécution.

  1. Créer un Job Template :
    • Allez dans Templates, cliquez sur Add -> Add job template.
    • Nom : Check Web Server Status
    • Job Type : Run (pour exécuter un playbook).
    • Inventaire : Lab Servers
    • Projet : My Automation Project (le projet se mettra à jour et un menu déroulant pour le playbook apparaîtra).
    • Playbook : Sélectionnez votre playbook dans la liste (ex: playbooks/check_httpd.yml).
    • Identifiants (Credentials) : Cliquez sur l'icône de loupe et sélectionnez l'identifiant SSH Key Lab que vous avez créé.
    • Cliquez sur Save.
  2. Lancer la Tâche :
    Sur la page du template que vous venez de créer, cliquez sur le bouton Launch.Vous serez redirigé vers une page qui affiche en temps réel la sortie console de la commande ansible-playbook. Vous pouvez voir chaque tâche s'exécuter, les "facts" être collectés et le récapitulatif final.

Félicitations ! Vous avez installé, configuré et utilisé AWX pour exécuter votre première tâche d'automatisation de manière centralisée et contrôlée.


Pour aller plus loin

Votre voyage avec AWX ne fait que commencer. Voici quelques pistes pour approfondir vos connaissances et exploiter toute la puissance de la plateforme :

  • Inventaires Dynamiques : Configurez AWX pour qu'il récupère dynamiquement son inventaire depuis des sources cloud (AWS, Azure, GCP) ou des CMDB (NetBox, ServiceNow).
  • Workflows : Enchaînez plusieurs Job Templates pour créer des pipelines d'automatisation complexes, avec des logiques conditionnelles (par exemple, lancer une remédiation uniquement si une tâche de vérification échoue).
  • Environnements d'Exécution Personnalisés (Execution Environments) : La méthode moderne pour gérer les dépendances Python et les collections Ansible. Créez vos propres images de conteneurs avec les outils exacts dont vos playbooks ont besoin.
  • Intégration CI/CD : Utilisez l'API ou l'outil CLI d'AWX (awx-cli) pour déclencher des jobs depuis votre pipeline GitLab CI, Jenkins ou GitHub Actions.
  • Documentation Officielle :

Conclusion

Installer AWX sur Kubernetes via son opérateur peut sembler intimidant au premier abord, mais cette méthode offre une robustesse, une scalabilité et une facilité de maintenance inégalées. En suivant ce guide, vous avez non seulement déployé une instance AWX fonctionnelle, mais vous avez aussi construit les fondations d'une véritable plateforme d'automatisation centralisée.

Vous avez transformé une collection de scripts et de playbooks en un service contrôlé, auditable et prêt à être utilisé par toute votre équipe. AWX est un formidable levier pour standardiser vos pratiques d'automatisation, améliorer la sécurité et libérer un temps précieux pour vos équipes techniques.

Vous vous êtes abonné avec succès à CodeClan
Parfait ! Ensuite, complétez le paiement pour obtenir un accès complet à tout le contenu premium.
Erreur ! Impossible de s'inscrire. Lien invalide.
Bienvenue ! Vous vous êtes connecté avec succès.
Erreur ! Impossible de se connecter. Veuillez réessayer.
Succès ! Votre compte est entièrement activé, vous avez maintenant accès à tout le contenu.
Erreur ! Le paiement Stripe a échoué.
Succès ! Vos informations de facturation sont mises à jour.
Erreur ! La mise à jour des informations de facturation a échoué.