Rundeck est une plateforme pour l’automatisation des opérations et la gestion des exécutions. Bien que vous puissiez tout faire via l’interface web, la vraie puissance vient de son API, qui vous permet d’intégrer Rundeck dans vos scripts et vos systèmes existants.
Ce guide rapide vous montrera comment utiliser la bibliothèque standard de Python, requests, pour interagir avec l’API de Rundeck.
Prérequis
- Un serveur Rundeck en cours d’exécution.
- Un Jeton d’API (API Token) créé dans les paramètres de votre profil utilisateur Rundeck.
- Python et la bibliothèque
requestsinstallés (pip install requests).
Étape 1 : Définir les Constantes de Connexion
Nous allons commencer par définir l’URL de base de votre instance Rundeck et l’en-tête d’autorisation qui contiendra votre Jeton d’API
import requests
import json
# Remplacez par l'URL de votre serveur Rundeck
RUNDECK_URL = "http://votreserveur:4440"
# Remplacez par votre véritable Jeton d'API
API_TOKEN = "votre_jeton_api_secret"
HEADERS = {
'X-Rundeck-Auth-Token': API_TOKEN,
'Accept': 'application/json' # Nous voulons une réponse au format JSON
}
Étape 2 : Interroger l’API
L’une des requêtes les plus courantes est de lister tous les projets. L’API de Rundeck a généralement un chemin qui inclut la version d’API que vous ciblez (souvent api/40 ou plus).
Pour lister les projets, le chemin d’accès est souvent /api/40/projects.
Exemple 1 : Lister les Projets
def lister_projets():
# Chemin complet de l'API pour lister les projets
endpoint = f"{RUNDECK_URL}/api/40/projects"
print(f"-> Requête à : {endpoint}")
try:
# Envoi de la requête GET
reponse = requests.get(endpoint, headers=HEADERS)
reponse.raise_for_status() # Lève une exception pour les codes d'erreur (4xx ou 5xx)
# La réponse est une liste de projets au format JSON
projets = reponse.json()
print(f"\n✅ Nombre de projets trouvés : {len(projets)}")
for projet in projets:
print(f"- Nom : {projet['name']} (Description : {projet.get('description', 'N/A')})")
except requests.exceptions.RequestException as e:
print(f"❌ Erreur lors de la requête : {e}")
lister_projets()
Exemple 2 : Exécuter un Job
Pour une opération plus complexe comme l’exécution d’un job, vous utilisez généralement une méthode POST et vous devez cibler l’ID du job.
# Remplacez par l'ID de votre job
JOB_ID = "1a2b3c4d-5e6f-7890-abcd-ef0123456789"
def executer_job():
# Chemin de l'API pour l'exécution d'un job
endpoint = f"{RUNDECK_URL}/api/40/job/{JOB_ID}/run"
print(f"-> Exécution du job ID: {JOB_ID}")
try:
# Requête POST sans corps (par défaut, il n'y a pas d'options)
reponse = requests.post(endpoint, headers=HEADERS)
reponse.raise_for_status()
resultat = reponse.json()
# Le résultat contient l'ID de l'exécution
execution_id = resultat['id']
print(f"\n✅ Job lancé avec succès !")
print(f" ID d'exécution : {execution_id}")
print(f" URL de suivi : {resultat.get('permalink')}")
except requests.exceptions.RequestException as e:
print(f"❌ Erreur lors de l'exécution du job : {e}")
# executer_job() # Décommentez pour tester l'exécution
Conclusion
En utilisant la simple bibliothèque requests, vous pouvez facilement automatiser et interagir avec votre environnement Rundeck en quelques lignes de Python. Que ce soit pour récupérer des métriques, déclencher des workflows ou gérer des ressources.

