AWX : piloter Ansible depuis une interface web

Avancé 6 min de lecture 30 août 2026

Si vous avez suivi le tutoriel « Ansible : installation et prise en main », vous savez maintenant Ă©crire et exĂ©cuter des playbooks en ligne de commande. TrĂšs bien pour un usage personnel ou une petite Ă©quipe technique — plus limitĂ© dĂšs qu’il faut partager l’automatisation avec des collĂšgues moins Ă  l’aise en CLI, garder un historique centralisĂ© des exĂ©cutions, ou restreindre qui a le droit de lancer quoi. C’est exactement ce qu’apporte AWX.

Qu’est-ce qu’AWX ?

AWX est le projet open source qui sert de base amont (upstream) au produit commercial Red Hat Ansible Automation Controller (anciennement « Ansible Tower »). Il ajoute une couche web complÚte au-dessus du moteur Ansible :

  • Une interface web pour lancer des playbooks sans taper de commande
  • Une API REST complĂšte pour intĂ©grer l’automatisation dans d’autres outils
  • La gestion centralisĂ©e des credentials (SSH, cloud, vault) chiffrĂ©s en base, jamais exposĂ©s en clair aux utilisateurs
  • Le RBAC (contrĂŽle d’accĂšs basĂ© sur les rĂŽles) : qui peut voir, modifier ou exĂ©cuter quoi, par organisation et par Ă©quipe
  • La planification de jobs rĂ©currents et les notifications (email, Slack
) en cas d’Ă©chec
  • Un historique complet et consultable de chaque exĂ©cution, avec les logs dĂ©taillĂ©s de chaque tĂąche
  • Des inventaires dynamiques synchronisĂ©s automatiquement depuis vos sources (cloud, VMware, fichiers)

En rĂ©sumĂ© : Ansible reste le moteur d’exĂ©cution ; AWX est la tour de contrĂŽle qui l’entoure pour un usage en Ă©quipe.

Prérequis

Depuis plusieurs versions, AWX se dĂ©ploie exclusivement via l’awx-operator sur un cluster Kubernetes — l’ancienne mĂ©thode par Docker Compose est abandonnĂ©e. Pour tester ou pour un usage en petite structure, un cluster Minikube local suffit trĂšs bien.

  • kubectl installĂ© et configurĂ©
  • kustomize (intĂ©grĂ© Ă  kubectl depuis la version 1.14, via kubectl apply -k)
  • Minikube pour un dĂ©ploiement de test, ou un cluster Kubernetes existant avec une StorageClass supportant le provisionnement dynamique en production
  • Au minimum 4 CPU et 6 Go de RAM allouĂ©s au cluster de test
Positionnement d’AWX au-dessus du moteur Ansible Utilisateurs (Ă©quipe) interface web / API REST AWX RBAC, credentials, historique Moteur Ansible playbooks, inventaire, SSH DĂ©ployĂ© via awx-operator sur Kubernetes
AWX orchestre l’exĂ©cution des mĂȘmes playbooks Ansible, avec une couche de contrĂŽle d’accĂšs et de traçabilitĂ© en plus.

Étape 1 — PrĂ©parer un cluster de test avec Minikube

minikube start --cpus=4 --memory=6g --addons=ingress
kubectl cluster-info

Étape 2 — DĂ©ployer l’awx-operator

CrĂ©ez un dossier de dĂ©ploiement avec un fichier kustomization.yaml. VĂ©rifiez au prĂ©alable, sur la page des releases GitHub d’ansible/awx-operator, la derniĂšre version stable disponible plutĂŽt que de recopier un numĂ©ro figĂ© qui sera vite dĂ©passĂ© :

mkdir awx-deploy && cd awx-deploy
cat > kustomization.yaml <<EOF
resources:
  - github.com/ansible/awx-operator/config/default?ref=VERSION_A_VERIFIER
images:
  - name: quay.io/ansible/awx-operator
    newTag: VERSION_A_VERIFIER
namespace: awx
EOF

kubectl apply -k .
kubectl get pods -n awx --watch

Patientez jusqu’Ă  ce que le pod awx-operator-controller-manager passe en statut Running avant de continuer.

Étape 3 — DĂ©ployer l’instance AWX elle-mĂȘme

L’opĂ©rateur Ă©tant en place, il ne reste qu’Ă  lui dĂ©clarer une ressource personnalisĂ©e AWX pour qu’il provisionne automatiquement la base de donnĂ©es, le service web et les pods nĂ©cessaires :

cat > awx-demo.yml <<EOF
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
  namespace: awx
spec:
  service_type: nodeport
EOF

kubectl apply -f awx-demo.yml
kubectl get pods -n awx --watch

Le premier dĂ©ploiement peut prendre plusieurs minutes (migration de base de donnĂ©es incluse) — un comportement normal, pas un blocage Ă  corriger.

Étape 4 — RĂ©cupĂ©rer le mot de passe administrateur

kubectl get secret awx-demo-admin-password -n awx \
  -o jsonpath="{.data.password}" | base64 --decode ; echo

L’identifiant par dĂ©faut est admin.

Étape 5 — AccĂ©der Ă  l’interface web

# Avec Minikube
minikube service awx-demo-service --url -n awx

# Ou via un port-forward classique
kubectl port-forward service/awx-demo-service -n awx 8080:80

Ouvrez l’URL obtenue (ou http://localhost:8080 avec le port-forward) et connectez-vous avec admin et le mot de passe rĂ©cupĂ©rĂ© Ă  l’Ă©tape prĂ©cĂ©dente.

Étape 6 — Premiers pas dans l’interface

  1. Credentials : crĂ©ez un credential de type « Machine » avec votre clĂ© SSH privĂ©e — c’est ce qui remplace la clĂ© locale que vous utilisiez en ligne de commande, dĂ©sormais stockĂ©e chiffrĂ©e cĂŽtĂ© serveur.
  2. Projects : dĂ©clarez un projet pointant vers votre dĂ©pĂŽt Git contenant les playbooks (le mĂȘme que celui utilisĂ© dans le tutoriel Ansible prĂ©cĂ©dent). AWX synchronise automatiquement la derniĂšre version Ă  chaque exĂ©cution.
  3. Inventories : recrĂ©ez votre inventaire, soit manuellement (import du fichier inventory.ini), soit via une source dynamique si vos machines viennent d’un cloud ou d’un hyperviseur dĂ©jĂ  supportĂ©.
  4. Job Templates : associez un playbook du projet, un inventaire et un credential dans un modĂšle de job rĂ©utilisable — c’est l’Ă©quivalent web de votre commande ansible-playbook.
  5. Lancez le job depuis l’interface et suivez l’exĂ©cution en direct, tĂąche par tĂąche, avec le mĂȘme niveau de dĂ©tail que la sortie CLI d’Ansible.

RBAC : organiser les accÚs en équipe

AWX structure les permissions autour de trois notions :

  • Organizations : le regroupement de plus haut niveau (une organisation par client, par exemple, dans un contexte de prestation).
  • Teams : des groupes d’utilisateurs au sein d’une organisation.
  • RĂŽles attribuĂ©s Ă  un niveau prĂ©cis (projet, inventaire, job template
) : Admin, Execute (lancer un job sans pouvoir le modifier), Read seulement, etc.

Bonne pratique : donnez le rĂŽle Execute Ă  la majoritĂ© des utilisateurs sur les job templates de production — ils peuvent lancer les automatisations validĂ©es, sans pouvoir modifier les playbooks ni les credentials sous-jacents.

Bonnes pratiques et limites Ă  connaĂźtre

  • Sauvegardez la base de donnĂ©es du cluster AWX rĂ©guliĂšrement — elle contient l’historique des jobs, les credentials chiffrĂ©s et toute la configuration ; sa perte revient Ă  repartir de zĂ©ro.
  • Mettez Ă  jour l’opĂ©rateur en changeant la rĂ©fĂ©rence de version dans kustomization.yaml puis en rĂ©appliquant — ne modifiez jamais les ressources Kubernetes gĂ©nĂ©rĂ©es Ă  la main.
  • AWX ajoute une couche d’infrastructure (Kubernetes) Ă  maintenir en plus d’Ansible lui-mĂȘme — pour une Ă©quipe d’une ou deux personnes gĂ©rant quelques serveurs, la ligne de commande reste souvent plus simple ; AWX devient pertinent dĂšs que plusieurs personnes doivent partager l’automatisation en toute sĂ©curitĂ©.
  • Si le support commercial et les garanties de version vous importent, la version payante Ansible Automation Platform de Red Hat s’appuie sur les mĂȘmes concepts qu’AWX, avec du support officiel en plus.