Création d'un Token API AWX et Commandes Utiles
L'API REST d'AWX permet d'automatiser et de piloter l'intégralité de votre infrastructure sans passer par l'interface web. Pour interagir avec cette API en toute sécurité, il est nécessaire de générer un Personal Access Token (PAT).
1. Créer un Token d'Accès dans AWX
La génération du token se fait une seule fois depuis l'interface web d'AWX :
- Connectez-vous à l'interface web d'AWX avec votre compte administrateur.
- Dans le menu latéral de gauche, allez dans Access > Users.
- Cliquez sur votre nom d'utilisateur (ex: admin).
- Allez dans l'onglet Tokens en haut de la page.
- Cliquez sur le bouton Add (Ajouter).
- Remplissez le formulaire :
- Description : Donnez un nom clair (ex: Token Script Bash Homelab).
- Scope (Portée) : Sélectionnez Write (si vous avez besoin de lancer des jobs) ou All.
- Cliquez sur Save.
⚠️ ATTENTION : Le Token généré (une longue chaîne de caractères) ne s'affichera qu'une seule fois. Copiez-le immédiatement et conservez-le dans un endroit sûr (comme un gestionnaire de mots de passe ou Vaultwarden).
2. Comment utiliser le Token
Pour chaque requête API (souvent via curl), vous devez passer ce token dans les en-têtes (Headers) HTTP pour prouver votre identité.
# Structure de base de l'authentification
curl -H "Authorization: Bearer VOTRE_TOKEN_ICI" https://awx.domaine.lan/api/v2/...
3. Antisèche (Cheat Sheet) des requêtes API utiles
Voici quelques commandes Bash prêtes à l'emploi. Pensez à adapter $AWX_HOST et $TOKEN avec vos valeurs.
A. Trouver l'ID d'un Job Template
Avant de lancer un playbook, vous avez besoin de connaître son ID. Cette commande liste tous les templates avec leur nom et leur ID.
curl -s -k -H "Authorization: Bearer $TOKEN" \
-X GET "$AWX_HOST/api/v2/job_templates/" \
| jq '.results[] | "ID: \(.id) - Nom: \(.name)"'
Note : L'outil jq est utilisé ici pour formater la sortie JSON de manière lisible.
B. Lancer un Job Template immédiatement
Permet de déclencher un playbook à la demande (très utile pour l'intégrer dans d'autres scripts ou pipelines).
TEMPLATE_ID="42" # Remplacez par votre ID
curl -s -k -X POST "$AWX_HOST/api/v2/job_templates/$TEMPLATE_ID/launch/" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
C. Lancer un Job Template avec une Limit spécifique
Idéal si vous voulez exécuter un playbook générique (comme "Setup SSH") sur une seule machine spécifique via l'API.
TEMPLATE_ID="42"
MACHINE_CIBLE="bookstack"
curl -s -k -X POST "$AWX_HOST/api/v2/job_templates/$TEMPLATE_ID/launch/" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"limit": "'"$MACHINE_CIBLE"'"
}'
D. Vérifier le statut du dernier Job exécuté
Permet de savoir si le job s'est bien passé (successful) ou s'il a échoué (failed).
TEMPLATE_ID="42"
curl -s -k -H "Authorization: Bearer $TOKEN" \
-X GET "$AWX_HOST/api/v2/job_templates/$TEMPLATE_ID/jobs/?order_by=-id&page_size=1" \
| jq '.results[0] | "Job ID: \(.id) - Statut: \(.status)"'