Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+172
View File
@@ -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é