🐍 Interroger l’API de Rundeck avec Python : Un Guide Rapide

par | Déc 10, 2025 | Script, Uncategorized | 0 commentaires

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 requests installĂ©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.

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *