一、RunDeck介绍

RunDeck是用Java/Grails写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。RunDeck提供如下功能:

1.1 提供web界面和命令行来执行shell命令和job

1.2 自定义job步骤

1.3 设置shell命令/job运行周期(类似cron table的功能)

1.4 用户权限控制,支持LDAP/ActiveDirectory

1.5 保存历史日志

1.6 提供web API

通过以上功能,RunDeck可以在任意数量的服务器上批量执行不同的任务,降低对自动化的部署、执行、维护的工作。

二、RunDeck架构

RunDeck是基于Javawebapp服务,运行在Servlet容器里。用户登陆RunDeck,在web界面进行操作,请求对远程服务器进行操作。web通过HTTP(s)RunDeck服务进行通信,RunDeck服务接受服务请求后,从配置文件里面读取用户权限,以及服务器资源的一些信息。结合权限以及资源信息,RunDeck服务通过ssh对远程的服务器进行操作,并将操作结果存放在数据库中。

rundeck 部署及使用_第1张图片

三、RunDeck的应用

在我们公司,推送后台需要大量的服务器做支撑,也就有需求对服务器做各种配置,安装,升级等操作。通过RunDeck,可以很方便、快速的完成这些任务。

为了更好的利用RunDeck,我们主要从以下2个方面来配置,规划,管理我们的服务器资源和脚本资源。

3.1 projecttag对服务器进行分类

根据服务器资源的不同作用,可以将服务器组分成不同的项目类别,方便不同用户操作。比如我们就有一个专门的project是管理push功能的服务器。通过配置文件,可以赋予用户不同的权限,有些用户只能查看push组的服务器资源,有些用户可以操作。

虽然用project可以对不同服务器进行分组,但是同一个project的服务器有不同的作用。比如在push组的服务器项目中,又可以分数据库服务器,下载服务器,日志服务器等等。对于这种情况,通过给服务器打不同tag,这样需要对一批服务器执行相同操作,就非常方便。

3.2 通过job来管理任务

RunDeck提供一个非常强大的功能,就是可以自己定义jobjob由命令、脚本、其它的job组成。比如对于服务器上的各种web server,可以定义不同的job,执行不同的操作。实际配置中,我们就对apache服务器定义了三个job,分别对应启动、停止、重启apache服务。对于nginx服务器,定义job来配置nginx的端口号。通过job机制,用户可以定义、管理、维护各种脚本、操作,极大的提高自动化效率。

四、rundeck安装

4.1 下载rundeck jar

# cd /apps/rundeck

# wget http://download.rundeck.org/jar/rundeck-launcher-1.6.2.jar

4.2 第一次启动rundeck

# java -jar rundeck-launcher-1.6.2.jar

4.3 设置环境变量

#[root@test02 rundeck]#sed -i '$a RDECK_BASE="/apps/rundeck"' /etc/profile

# [root@test02 rundeck]# sed -i '$a export RDECK_BASE' /etc/profile

4.4 登陆rundeck web 界面

http://192.168.1.102:4440

默认账户及密码:admin/admin

4.5  启动脚本

[root@test02 rundeck]# sh  server/sbin/rundeckd restart

4.6 创建projectjobs

4.6.1 创建项目

点击Create a new Project

命令行创建:

# [root@test02 rundeck]# /apps/rundeck/tools/bin/rd-project -a create -p apps

4.6.4  创建jobs

点击New job....

4.7 安全认证配置

4.7.1 增加用户

# cd /apps/rundeck

# java -cp server/lib/jetty-6.1.21.jar:server/lib/jetty-util-6.1.21.jar org.mortbay.jetty.security.Password test test123

4.7.2 MD5值添加至realm.properties配置文件

# vim server/config/realm.properties

4.7.3 重启rundeck生效

[root@test02 rundeck]# sh  server/sbin/rundeckd restart

注释:

Test为用户名

Test123为密码

生成密码有四种格式:明文,OBFMD5CRYPT

realm.properties 格式如下:

用户名:加密方法及密码,所属角色名,所属角色组

角色组可添加多个以“,”分隔

五、备份projectjobs

5.1 备份project

cp -r /apps/rundeck/project 备份路径

5.2 备份jobs (比如备份apps项目)

# /app/rundeck/tools/bin/rd-jobs list -f ~/backup/jobs.xml -p apps

5.3 备份data/logs (需要先停止rundeck

[root@test02 rundeck]# sh  server/sbin/rundeckd stop

[root@test02 ~]# cp -r  /apps/rundeck/server/data/ ~/backup

[root@test02 ~]# cp -r  /apps/rundeck/var/logs/ ~/backup

[root@test02 rundeck]# sh  server/sbin/rundeckd start

六、还原jobs

# /apps/rundeck/tools/bin/rd-jobs load -f ~/backup/jobs.xml -p apps