Passer au contenu principal

Tower / AWX (Ansible)

RBAC et intégration CI/CD

AWX sans contrôle d'accès est une console d'administration ouverte. Le RBAC (Role-Based Access Control) d'AWX permet de définir précisément qui peut voir, lancer, ou modifier chaque ressource. L'API REST complète le tableau en permettant d'intégrer AWX dans n'importe quel pipeline CI/CD.

Modèle RBAC d'AWX

La hiérarchie : Instance AWX > Organisations > Équipes > Utilisateurs.

Chaque ressource (inventaire, projet, job template, credential) dispose de rôles assignables :

  • Admin : lecture, écriture, suppression, exécution
  • Use : utiliser la ressource (ex: associer un credential à un template)
  • Execute : lancer un job template uniquement
  • Read : lecture seule
  • Auditor : lecture de tout, y compris les logs

Cas d'usage classique : une équipe Dev a le rôle Execute sur les Job Templates de staging, mais uniquement Read sur ceux de production. Seule l'équipe Ops a le rôle Execute en prod.

Créer des organisations et équipes

Administration › Organizations › Add : une organisation par domaine métier ou par client.

Dans l'organisation : onglet Teams › Add. Chaque équipe regroupe des utilisateurs et hérite des permissions de l'organisation.

Assigner un rôle sur une ressource : depuis la fiche de la ressource, onglet Access › Add, sélectionner l'utilisateur ou l'équipe et le rôle.

API REST AWX

L'API REST d'AWX est complète et documentée via Browsable API sur /api/v2/. Chaque opération de l'interface web est disponible via API.

# Lancer un job template via curl
curl -s -X POST   -H "Authorization: Bearer TOKEN"   -H "Content-Type: application/json"   -d '{"limit": "web01.example.com", "extra_vars": {"app_version": "2.4.1"}}'   https://awx.example.com/api/v2/job_templates/42/launch/

# Récupérer le token via awxkit
pip install awxkit
awx login --conf.host https://awx.example.com   --conf.username admin --conf.password MonMotDePasse
awx job_templates launch 42   --extra_vars '{"app_version": "2.4.1"}'   --monitor

Webhooks : déclencher depuis Git

AWX supporte les webhooks GitHub et GitLab nativement. Configuration sur le Job Template :

  1. Activer "Enable Webhook" sur le Job Template
  2. Sélectionner le service (GitHub / GitLab)
  3. Copier l'URL webhook et le Webhook Key générés
  4. Configurer dans GitHub/GitLab : Settings › Webhooks › Add, coller l'URL et la clé

À chaque push, AWX déclenche automatiquement le Job Template.

Intégration GitLab CI

# .gitlab-ci.yml
deploy_prod:
  stage: deploy
  image: python:3.11
  script:
    - pip install awxkit
    - awx login --conf.host $AWX_URL
        --conf.username $AWX_USER
        --conf.password $AWX_PASSWORD
    - awx job_templates launch $AWX_TEMPLATE_ID
        --extra_vars "{"app_version": "$CI_COMMIT_TAG"}"
        --monitor
  only:
    - tags

Approval workflow

AWX permet d'insérer un nœud d'approbation manuelle dans un Workflow Template. Le pipeline se met en pause, envoie une notification, et attend qu'un utilisateur autorisé approuve ou rejette avant de continuer vers le déploiement production.