Initial vault setup
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
---
|
||||
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é
|
||||
Reference in New Issue
Block a user