Rundeck is an open source automation service with a web console, command line tools and a WebAPI. It lets you easily run automation tasks across a set of nodes.
Rundeck 概述
Rundeck 是一个开源的运维自动化平台,提供任务调度、执行和监控功能。核心特性包括:
- Web UI: 友好的图形界面,易于操作
- 作业调度: 支持 Cron 表达式定时调度
- 节点管理: 管理和组织目标服务器
- 访问控制: 基于角色的权限管理(ACL)
- API 集成: RESTful API 支持自动化集成
- 插件扩展: 丰富的插件生态系统
注意: Rundeck 适合中小规模的任务调度,但对于复杂的依赖关系管理不如 Apache Airflow 方便。对于有复杂 DAG 依赖的场景,建议使用 Airflow。
安装 Rundeck
使用 Docker 安装(推荐)
1 | # 快速启动 |
Docker Compose
1 | version: '3' |
Linux 手动安装
1 | # Debian/Ubuntu |
核心概念
项目(Project)
项目是 Rundeck 中的顶层组织单元,用于隔离不同的环境或应用。
1 | # 创建项目(通过 Web UI) |
节点(Nodes)
节点是 Rundeck 可以执行任务的目标服务器。
1 | # resources.yaml - 节点定义文件 |
作业(Jobs)
作业是 Rundeck 中定义的自动化任务。
创建作业示例
1. 简单命令作业
1 | # deploy-app.yaml |
2. 脚本作业
1 | - description: Backup Database |
3. 多步骤作业
1 | - description: Complete Deployment Pipeline |
作业选项(Job Options)
作业可以接受参数输入:
1 | - name: Deploy Specific Version |
节点过滤器
通过节点过滤器选择目标服务器:
1 | - name: Update Web Servers |
访问控制(ACL)
创建 ACL 策略文件:
1 | # /etc/rundeck/admin.aclpolicy |
通知配置
Email 通知
1 | - name: Backup with Notification |
Webhook 通知
1 | - name: Deploy with Webhook |
API 使用
基本认证
1 | # 获取 API Token |
使用 rd CLI
1 | # 安装 rd CLI |
插件扩展
常用插件
1 | # 安装插件 |
Ansible 集成示例
1 | - name: Run Ansible Playbook |
总结核心知识要点
Rundeck 架构
- 单体应用: Web UI + 调度引擎 + 数据库
- 执行方式: SSH、WinRM、本地执行
- 调度引擎: 基于 Quartz 的 Cron 调度
- 存储: 支持 H2、MySQL、PostgreSQL
核心功能示例
1. 简单定时任务
1 | name: Daily Log Cleanup |
2. 带参数的作业
1 | name: Service Control |
3. 错误处理
1 | name: Deployment with Rollback |
作业调度对比
| 特性 | Rundeck | Airflow | Cron |
|---|---|---|---|
| Web UI | ✅ | ✅ | ❌ |
| DAG 支持 | ❌ | ✅ | ❌ |
| 节点管理 | ✅ | ❌ | ❌ |
| 权限控制 | ✅ | ✅ | ❌ |
| API | ✅ | ✅ | ❌ |
| 复杂依赖 | ⚠️ | ✅ | ❌ |
最佳实践
- 项目隔离: 按环境或应用划分项目
- 版本控制: 将作业定义导出到 Git
- 密钥管理: 使用 Key Storage 或 Vault
- 日志保留: 配置日志清理策略
- 监控告警: 配置失败通知
- 权限最小化: 遵循最小权限原则
常用场景
1 | # 场景1: 自动化部署 |
核心命令
1 | # 服务管理 |
核心概念
- Project: 顶层组织单元,隔离不同环境
- Node: 执行目标,可以是服务器、容器等
- Job: 自动化任务定义
- Execution: 作业的一次执行实例
- ACL: 访问控制列表,控制权限
对比 Airflow
何时选择 Rundeck
- 简单的定时任务
- 以 SSH 远程执行为主
- 需要友好的 Web UI
- 小型团队快速上手
何时选择 Airflow
- 复杂的数据管道
- 大量任务依赖(DAG)
- 数据工程/ETL 场景
- Python 生态集成