Rundeck是一款用Java编写的开源自动化运维工具,它把命令行操作变成了可视化界面,运维人员可以通过网页提交任务、设定定时计划、查看执行日志。对于使用红旗Linux的企业来说,在国产操作系统上跑通Rundeck,意味着批量发布、巡检脚本、备份任务都能集中管理,不再需要逐台服务器手动登录。本文完整介绍在红旗Linux上部署Rundeck的全过程,包括环境准备、安装、配置和第一个作业的运行。

一、Rundeck的核心功能与架构
Rundeck的设计目标是把分散的运维操作集中到一个平台。它的核心能力包括三个方面:第一是远程执行,通过SSH或WinRM连接目标节点,把命令或脚本分发下去执行;第二是作业调度,支持Cron表达式和简单周期两种方式定义计划任务;第三是权限控制,基于角色管理谁可以看作业、谁可以执行作业、谁可以修改定义。
从架构上看,Rundeck由几个部分组成。服务端本身是一个Java Web应用,默认内嵌Jetty容器,也可以部署到独立的Tomcat中。数据层方面,执行记录可以存放在本地文件或关系型数据库中,生产环境建议配置MySQL或者国产数据库来持久化。节点信息通过资源模型来描述,可以来自静态文件,也可以对接CMDB、云平台API等外部源。理解这套结构后,安装和排错都会更有方向感。
二、在红旗Linux上安装Rundeck
安装前需要确认系统版本和软件依赖。红旗Linux基于RPM体系,本文以红旗Asianux服务器版为例说明。Rundeck 3.x系列要求JDK 11或以上版本,先检查Java环境是否就绪。
登录服务器执行以下命令确认系统信息:
cat /etc/redflag-release java -version # 如果没有安装JDK,使用yum安装OpenJDK 11 yum install -y java-11-openjdk java-11-openjdk-devel java -version
确认输出中包含11字样的版本号后,开始下载Rundeck的RPM包。可以前往官方发布页获取,也可以直接使用wget下载到本地。安装过程很简单,一条rpm或yum命令即可完成:
cd /opt wget https://download.rundeck.org/packages/rpm/rundeck-3.4.10-20220118.noarch.rpm yum localinstall -y rundeck-3.4.10-20220118.noarch.rpm # 安装完成后查看生成的目录结构 ls -l /etc/rundeck/ ls -l /var/lib/rundeck/
安装完成后主要关注三个目录:/etc/rundeck存放配置文件,其中rundeck-config.properties是主配置,framework.properties定义框架参数;/var/lib/rundeck存放数据文件和日志;/var/log/rundeck存放服务日志。熟悉这些路径对后续排错非常关键。
启动服务并设置开机自启:
systemctl start rundeckd systemctl enable rundeckd systemctl status rundeckd # 观察启动日志,确认没有报错 tail -f /var/log/rundeck/service.log
三、配置调整与项目创建
默认配置只监听本机回环地址,其他机器无法访问网页控制台。需要修改framework.properties中的监听地址参数,将framework.server.url和grails相关配置改为服务器的实际IP。同时建议修改默认管理员密码,默认账号是admin,初始密码存放在/etc/rundeck/adminpw文件中,首次登录后应立即在界面中修改。
具体修改示例如下:
# 编辑配置文件 vi /etc/rundeck/framework.properties # 修改以下几项 framework.server.name = 192.168.10.20 framework.server.hostname = 192.168.10.20 framework.server.port = 4440 framework.server.url = http://192.168.10.20:4440 # 修改完成后重启服务 systemctl restart rundeckd
用浏览器访问http://192.168.10.20:4440,输入admin账号登录后进入控制台。接下来创建第一个项目。点击左侧的New Project按钮,填写项目名称,资源模型来源默认选择本地文件即可。项目创建完成后,需要在资源文件中登记被管理的节点。
节点文件位于/var/lib/rundeck/projects/项目名/etc/resources.xml,按以下格式添加目标主机:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<node name="web01" description="Web服务器1" hostname="192.168.10.21"
osFamily="linux" osName="Linux" username="root"
ssh-keypath="/var/lib/rundeck/.ssh/id_rsa"/>
<node name="web02" description="Web服务器2" hostname="192.168.10.22"
osFamily="linux" osName="Linux" username="root"
ssh-keypath="/var/lib/rundeck/.ssh/id_rsa"/>
<//project>这里需要注意SSH免密配置。Rundeck服务以rundeck用户运行,要为该用户生成密钥并把公钥分发到所有目标节点的authorized_keys中,否则执行任务时会报权限拒绝错误。
四、创建并执行第一个作业
进入项目后切换到Jobs页面,新建一个作业。作业由两部分组成:工作流步骤和调度策略。步骤类型可以是指定命令、执行脚本、引用脚本文件等,也可以嵌套引用其他作业,实现复杂流程编排。
举个例子,创建一个巡检作业,第一步执行磁盘使用率检查,第二步把结果输出到日志。在Command输入框中填写df -h | grep -v tmpfs,保存后点击Run执行。执行结束后切换到Activity页面,能看到本次运行的开始时间、耗时、每个节点的输出结果。如果某个节点失败,界面上会用红色标记,点击可查看详细的错误堆栈。
定时调度也很简单。在作业编辑页面的Schedule选项卡中启用计划,选择Cron表达式,例如0 0 2 * * ?表示每天凌晨两点执行。需要注意的是,Rundeck的调度由服务端触发,如果系统时间不准会导致任务错时执行,务必保证服务器时钟同步,可以用chronyd或ntpd服务与内部时间源对时。
五、常见问题排查
部署过程难免遇到问题,这里总结几个高频故障。第一个是启动失败,日志提示端口被占用,通常是4440端口冲突,可在rundeck-config.properties中修改server.port参数后重启。第二个是网页能打开但登录报错,多见于数据库未初始化或密码文件权限问题,检查/etc/rundeck目录下文件的属主是否为rundeck用户。
第三个是节点执行失败,报SSH连接错误。排查思路是先用su - rundeck切换到服务用户,手动执行ssh root@目标IP测试连通性。如果提示需要输入密码,说明免密没配好,重新分发公钥即可。另外还要确认目标机的SSH服务允许密钥登录,红旗Linux默认配置一般没问题,但如果加固过sshd_config,需要检查PubkeyAuthentication是否被设置为no。
整体来看,Rundeck在红旗Linux上的部署并不复杂,核心工作量在于SSH免密的准备和节点资源的登记。平台跑起来之后,再把日常的发布脚本、巡检任务逐步迁移进去,运维工作的规范化和可追溯性会有明显提升。