---
title: Rundeck
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, automation, job-scheduler, runbook, ci-cd, java, groovy]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Automation, https://github.com/rundeck/rundeck]
---

# 📅 Rundeck

> **L'ordonnanceur de jobs et runbook automation** — planifiez, exécutez et tracez **n'importe quel script** sur des centaines de nœuds depuis une interface web. Le **pont idéal entre SysAdmins, SREs et équipes support** non-techniques.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [rundeck.org](https://www.rundeck.org/) |
| **GitHub** | [rundeck/rundeck](https://github.com/rundeck/rundeck) |
| **License** | Apache-2.0 |
| **Langage** | Java (backend) + Groovy (Jobs) |
| **Étoiles GitHub** | 972 ⭐ (cette stat) / 5,5k+ en réalité |
| **Dernière MAJ** | 2026-06-05 |
| **Catégorie** | [[cat-automation\|Automation]] |

## 📝 Description

**Rundeck** est l'outil de référence pour l'**exécution sécurisée de scripts sur des flottes de serveurs hétérogènes**, avec une **UI web**, des **logs centralisés**, du **RBAC**, et un **scheduler cron**. Là où [[app-ansible|Ansible]] est opinionated (YAML, SSH, modules), Rundeck est **agnostique** : un Job Rundeck peut lancer un script bash, un playbook Ansible, une commande PowerShell, un kubectl, une requête SQL, ou n'importe quel exécutable — sur n'importe quel nœud, à n'importe quel moment.

L'idée centrale est le **runbook** : un **livret de procédures** versionné, documenté, traçable, exécutable en un clic. Au lieu d'avoir un wiki Notion avec « en cas de prod down, faire X, Y, Z », le runbook Rundeck **exécute réellement** X, Y, Z et garde la trace de qui a cliqué quand. C'est le rêve de tout SRE et de toute équipe support de niveau 1.

**Fonctionnalités principales** :
- ✅ **Jobs** : scripts paramétrés, versionnés (Git), avec description Markdown
- ✅ **Scheduler cron** : exécution planifiée (timezone-aware)
- ✅ **Exécution multi-nœuds** : lancer sur 1, 10 ou 1000 nœuds en parallèle
- ✅ **Plugins** : SSH, WinRM, HTTP, Kubernetes, Ansible, AWS, GCP, Azure
- ✅ **RBAC avancé** : ACL par projet, par groupe, par job (qui peut voir/exécuter quoi)
- ✅ **Logs centralisés** : sortie capturée, rejouable, téléchargeable, exportable en JSON
- ✅ **Webhooks** : déclencher un job via HTTP (idéal pour intégration n8n/GitLab CI)
- ✅ **Workflows** : enchaîner plusieurs jobs avec conditions (success, failure)
- ✅ **Variables d'entrée** : le job demande des paramètres à l'utilisateur
- ✅ **Notifications** : email, Slack, webhook, PagerDuty
- ✅ **Self-service portal** : interface simplifiée pour les non-techs
- ✅ **API REST** complète

**Vs Ansible** : Rundeck **utilise souvent Ansible** sous le capot (il y a un plugin officiel), mais il ajoute la couche UI, scheduler, audit, RBAC. Pour un homelab, Rundeck est utile dès qu'on a **3+ serveurs** et des opérations récurrentes (backups, nettoyage, déploiements).

**Origine** : créé par SimplifyOps en 2010, maintenant maintenu par la communauté, historiquement utilisé par Disney, Salesforce, Comcast.

## 🚀 Installation

### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
  rundeck:
    image: rundeck/rundeck:latest
    container_name: rundeck
    restart: unless-stopped
    ports:
      - "4440:4440"
    environment:
      RUNDECK_GRAILS_URL: "https://rundeck.mondomaine.fr"
      RUNDECK_SERVER_FORWARDED: "true"
      RUNDECK_DATABASE_URL: jdbc:mysql://rundeck-db/rundeck?autoReconnect=true
      RUNDECK_DATABASE_DRIVER: org.mariadb.jdbc.Driver
      RUNDECK_DATABASE_USERNAME: rundeck
      RUNDECK_DATABASE_PASSWORD: change-me-db
      RUNDECK_ADMIN_PASSWORD: change-me-admin
      RUNDECK_LOGLEVEL: INFO
    volumes:
      - rundeck-data:/home/rundeck/server/data
      - rundeck-config:/home/rundeck/etc

  rundeck-db:
    image: mariadb:10.11
    container_name: rundeck-db
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: change-me-root
      MARIADB_DATABASE: rundeck
      MARIADB_USER: rundeck
      MARIADB_PASSWORD: change-me-db
    volumes:
      - rundeck-db:/var/lib/mysql

volumes:
  rundeck-data:
  rundeck-config:
  rundeck-db:
```

Premier login : `admin` / `change-me-admin` (penser à le changer).

### Option 2 : Binaire Java (Linux)
```bash
wget https://dl.bintray.com/rundeck/rundeck/rundeck-X.X.X.war
java -jar rundeck-X.X.X.war   # démarre sur :4440
```

### Option 3 : Paquets RPM/DEB
Rundeck fournit des dépôts APT et YUM officiels. Cf. [docs.rundeck.org](https://docs.rundeck.com/docs/administration/install/installing-rundeck.html).

## ⚙️ Configuration

- **Projet** : unité logique (ex. "prod-web", "staging-db")
- **Key Storage** : stocker les clés SSH et secrets (chiffrés en DB)
- **Resource Model** : inventaire des nœuds cibles (statique YAML, dynamique AWS/GCP)
- **Jobs** : un Job = un script + un nom + une description + un schedule + des ACLs
- **ACLs** (`/etc/rundeck/<projet>/acls.policy`) : politiques de sécurité par projet (qui peut voir/exécuter quoi)
- **Plugins** : `~/.rundeck/libext/` pour les plugins custom (Java JAR)
- **Webhooks** : activer les webhooks d'URL pour intégration CI/CD

Exemple de Job simple (déclenché à la demande, exécuté sur tous les nœuds web) :
```yaml
- job:
    name: "Check disk space"
    description: "Affiche l'espace disque des serveurs web"
    nodeFilter: "role:web"
    sequence:
      - command: "df -h | grep -v tmpfs"
```

## 🔗 Alternatives

### Open Source
- **Jenkins** — surtout orienté CI/CD, mais peut faire office de scheduler
- **AWX** — l'équivalent Red Hat pour Ansible
- **StackStorm** — event-driven automation (plus complexe)
- **Airflow** — orienté data pipelines (Python)
- **n8n / Node-RED** — workflow automation no-code
- **Crontab + Syslog** — pour les fans de CLI pure
- **Ansible Semaphore** — [[app-semaphore-ui|UI web pour Ansible]] (plus simple, plus Ansible-centric)
- **Cronicle** — alternative JS plus légère

### Propriétaires (ce que Rundeck remplace)
- **Rundeck Enterprise / PagerDuty Runbook Automation** — sur devis, ajoute SSO/SAML
- **Ansible Tower** — sur le même créneau mais Ansible-only
- **BMC Control-M** — orchestrateur enterprise (centaines de k€)
- **Tidal Enterprise Scheduler** — mainframe/enterprise
- **CloudBees Flow (ex Electric Cloud)** — CI/CD enterprise
- **JFrog Pipelines** — orienté DevOps/CD

## 🔒 Sécurité

- ⚠️ **Changer `admin` password + `RUNDECK_ADMIN_PASSWORD`** avant l'exposition
- **ACLs fines** : toujours configurer les politiques d'accès (`acls.policy`) avant d'inviter l'équipe
- **Key Storage** : chiffré au repos, mais la **master key** doit être sauvegardée hors serveur
- **TLS obligatoire** : mettre Rundeck derrière Traefik/Caddy en HTTPS (le web admin expose tous vos scripts)
- **RBAC par projet** : un SRE ne doit pas pouvoir exécuter un job DBA
- **Audit log** : exporter vers un SIEM (Loki, Graylog)
- **Sécurité SSH** : préférer ed25519 aux clés RSA 1024
- **Rotation des credentials** : configurer l'API pour rotater automatiquement les secrets stockés

## 📚 Ressources

- [Site officiel](https://www.rundeck.org/)
- [Dépôt GitHub](https://github.com/rundeck/rundeck)
- [Documentation](https://docs.rundeck.com/)
- [Tutoriel Runbook Automation](https://docs.rundeck.com/docs/tutorials/beginners/)
- [Rundeck University](https://university.rundeck.com/)
- [Plugins communautaires](https://github.com/rundeck-plugins)

## 🔗 Pages Liées
- [[cat-automation]] — Catégorie Automation
- [[app-ansible]] — Souvent utilisé comme runner par Rundeck
- [[app-semaphore-ui]] — Alternative plus simple et Ansible-only
- [[cat-deployment]] — Catégorie Déploiement
- [[recettes-docker-compose]] — Templates Docker
- [[securisation-home-lab]] — Sécurité
