RousselTMLEARNING

Article · Ansible : de la découverte à l'expertise

Une interface graphique : AWX, Semaphore et AAP

1. Pourquoi une interface ? #

Industrialiser l'usage d'Ansible en équipe.

Les limites de la ligne de commande #

La CLI est parfaite pour un administrateur, mais en équipe on attend : un contrôle d'accès (qui peut déployer en production ?), un historique des exécutions, la gestion centralisée des credentials, la planification des jobs, des notifications et une API pour l'intégration CI/CD.

OutilLicencePoints fortsÀ savoir
AWXOpen source (Apache 2)Projet amont de Red Hat AAP : RBAC, workflows, API, execution environmentsDéployé via l'opérateur Kubernetes, pas de support officiel
Ansible Automation PlatformCommerciale (Red Hat)Support, Automation Hub, analytics, certificationsAbonnement
SemaphoreOpen source (MIT)Très léger, installation en minutes, Ansible/Terraform/scriptsMoins de fonctionnalités entreprise
RundeckOpen source / commercialeOrchestration générique, planificationAnsible n'est qu'un plugin

2. Démarrer rapidement avec Semaphore #

Une interface en 5 minutes avec Docker.

Installation avec Docker Compose #

# docker-compose.yml
services:
  semaphore:
    image: semaphoreui/semaphore:latest
    ports: ["3000:3000"]
    environment:
      SEMAPHORE_DB_DIALECT: bolt
      SEMAPHORE_ADMIN: admin
      SEMAPHORE_ADMIN_PASSWORD: ChangeMe!
      SEMAPHORE_ADMIN_NAME: Administrateur
      SEMAPHORE_ADMIN_EMAIL: admin@lab.local
    volumes:
      - semaphore-data:/var/lib/semaphore
      - semaphore-config:/etc/semaphore
volumes: { semaphore-data: {}, semaphore-config: {} }
docker compose up -d
# Interface : http://localhost:3000  (admin / ChangeMe!)

# Dans l'interface : Key Store (clé SSH) -> Repository (Git) -> Inventory -> Environment -> Task Template -> Run

3. AWX : le standard open source #

Installation et concepts clés.

Installer AWX avec l'opérateur Kubernetes #

Architecture d'AWX
AWX s'exécute sur Kubernetes ; chaque job tourne dans un conteneur éphémère.
# 1. Installer l'opérateur AWX (via kustomize)
cat > kustomization.yaml <<'EOF'
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - github.com/ansible/awx-operator/config/default?ref=2.19.1
images:
  - name: quay.io/ansible/awx-operator
    newTag: 2.19.1
namespace: awx
EOF
kubectl apply -k .

# 2. Déclarer une instance AWX
cat > awx.yaml <<'EOF'
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
  namespace: awx
spec:
  service_type: nodeport
EOF
kubectl apply -f awx.yaml

# 3. Suivre le déploiement et récupérer le mot de passe admin
kubectl -n awx get pods -w
kubectl -n awx get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 -d; echo

Les objets AWX à connaître #

ObjetRôle
OrganizationPérimètre d'isolation (équipes, clients)
CredentialClés SSH, mots de passe, tokens cloud, vault : chiffrés et jamais affichés
ProjectDépôt Git contenant les playbooks, synchronisé automatiquement
InventoryStatique ou dynamique (sources AWS, VMware, Git...)
Job TemplatePlaybook + inventaire + credentials + variables : l'unité d'exécution
WorkflowEnchaînement conditionnel de job templates (succès, échec, approbation)
Schedule / NotificationPlanification et alertes (Slack, mail, webhook)
Role (RBAC)Droits : admin, execute, read, use

4. Automatiser l'automatisation avec l'API et la CLI #

Tout est scriptable.

API REST et awx CLI #

# Lancer un job template depuis un pipeline CI
curl -s -X POST -H "Authorization: Bearer $AWX_TOKEN" -H "Content-Type: application/json" \
  -d '{"extra_vars": {"app_version": "1.4.2"}, "limit": "webservers"}' \
  https://awx.lab/api/v2/job_templates/42/launch/

# Suivre le job
curl -s -H "Authorization: Bearer $AWX_TOKEN" https://awx.lab/api/v2/jobs/118/ | jq '.status, .elapsed'

# Avec la CLI officielle
pip install awxkit
export TOWER_HOST=https://awx.lab TOWER_OAUTH_TOKEN=$AWX_TOKEN
awx job_templates list --name "Deploy webservers"
awx job_templates launch 42 --monitor --extra_vars '{"app_version":"1.4.2"}'
Bonne Pratique : Gérez AWX lui-même en « as code » avec la collection awx.awx ou le provider Terraform : organisations, credentials et templates deviennent reproductibles.

📄 Ansible : piloter ses automatisations avec une interface graphique (AWX, Semaphore, AAP) →

Mon suivi

  • ⏱ Durée estimée : ≈ 11 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Articles recommandés

Linux vs Unix : Le Guide Complet des Commandes et Distributions

Comprenez les différences entre Linux et Unix, explorez les distributions (serveur, desktop, ligh...

Ansible : l'inventaire (statique, dynamique, groupes et variables)

Comprendre et maîtriser l'inventaire Ansible : fichiers INI et YAML, groupes, variables d'hôte et...

Ansible : les commandes Ad-Hoc

Exécuter des actions immédiates sur un parc de serveurs avec ansible : modules ping, command, she...

Ansible : structurer son code avec les rôles

Créer, organiser et réutiliser des rôles Ansible : arborescence, defaults, tasks, handlers, templ...

Ansible : générer des fichiers dynamiques avec Jinja2 et les facts

Créer des fichiers de configuration dynamiques : templates Jinja2, variables, facts, filtres, bou...

Ansible : gérer la sécurité (Vault, SSH, privilèges et secrets)

Sécuriser Ansible : Ansible Vault, authentification SSH par clés, become et sudo, no_log, durciss...

Ansible : gérer son infrastructure avec des playbooks (Infrastructure as Code)

Écrire des playbooks de production : structure d'un projet, plays, handlers, tags, strategy seria...

Ansible : aller plus loin (tests, qualité, CI/CD et performance)

Industrialiser Ansible : ansible-lint, yamllint, Molecule, intégration continue, collections, exe...

Bonnes pratiques Vagrant : des environnements reproductibles et rapides

Bonnes pratiques Vagrant : Vagrantfile versionné, boxes épinglées, provisioning idempotent, multi...