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 dekubectl
. Vérifiez aveckubectl 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 :
- 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.).
- 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.
- 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.
- 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
- 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
- Se connecter : Ouvrir un navigateur sur
http://localhost:8080
et se connecter avec l'utilisateuradmin
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
- Créer un Identifiant (Credential) : Ajouter une clé SSH (ou un autre type d'identifiant) pour permettre à AWX de se connecter aux machines cibles.
- Créer un Inventaire (Inventory) : Définir un groupe de machines sur lesquelles les automatisations seront exécutées.
- Ajouter un Hôte (Host) : Ajouter au moins une machine cible à l'inventaire.
- 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
- Créer un Modèle de Tâche (Job Template) : Lier le Projet (playbook), l'Inventaire (hôte cible) et l'Identifiant (clé SSH).
- Lancer le Job Template : Exécuter le modèle pour démarrer la tâche d'automatisation.
- 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
- Se connecter :
Ouvrez votre navigateur web et allez à l'adressehttp://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), OÙ l'exécuter (l'inventaire), et COMMENT s'y connecter (les identifiants).
- 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 surAdd
. - 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
.
- Dans le menu de gauche, allez dans
- Créer un Inventaire (Inventory) :
L'inventaire est la liste des machines sur lesquelles vos playbooks s'exécuteront.- Allez dans
Inventories
et cliquez surAdd
->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 surAdd
. - Nom d'hôte :
server1.example.com
(ou l'IP/le nom DNS de votre machine de test). - Cliquez sur
Save
.
- Allez dans
- 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 surAdd
. - 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
.
- Allez dans
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.
- Créer un Job Template :
- Allez dans
Templates
, cliquez surAdd
->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
.
- Allez dans
- Lancer la Tâche :
Sur la page du template que vous venez de créer, cliquez sur le boutonLaunch
.Vous serez redirigé vers une page qui affiche en temps réel la sortie console de la commandeansible-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 :
- Documentation de l'opérateur AWX
- Documentation d'AWX (la documentation d'Automation Controller est largement applicable à AWX).
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.