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

rundeck 的安装:要安装JDK1.6

cd /data/webupdate/
wget 
screen -dmSL rundeck java -jar rundeck-launcher-2.1.1.jar
 
 安装完了需要改点东西  不然你跑起来后 有问题
vim /data/webupdate/etc/framework.properties  #把这个里面的localhost改成你的域名或者ip地址(用户名密码也在这里面)
vim /data/webupdate/server/rundeck-config.properties# 这里面的grails url中localhost改成 你的域名或者ip 不然登陆后直接调整都localhost啦
启动后同级目录下就会生成一系统文件目录./server/sbin/rundeckd  start启动

服务起来后
http://x.x.x.x:44440 登陆(用户名跟密码默认是admin)

node定义是在 /data/webupdate/projects/项目名/etc/resources.xml




  



多台主机的话,需要做SSHKEY信任

用户组配置文件/data/webupdate/server/config

#
# This file defines users passwords and roles for a HashUserRealm
#
# The format is
#  [, ...]
#
# Passwords may be clear text, obfuscated or checksummed.  The class 
# org.mortbay.util.Password should be used to generate obfuscated
# passwords or password checksums
#
# This sets the temporary user accounts for the Rundeck app
#
admin:admin,user,admin
user:user,webupdate,dingmh
dmh324:dmh324,user,dingmh

组的配置在:/data/webupdate/etc/admin.aclpolicy  可以新建一个组文件

description: dingmh all access.
cription: Full access.
context:
  project: 'dingmh' # all projects
for:
  resource:
    - allow: '*' # allow read/create all kinds
  adhoc:
    - allow: '*' # allow read/running/killing adhoc jobs
  job:
    - allow: '*' # allow read/write/delete/run/kill of all jobs
  node:
    - allow: '*' # allow read/run for all nodes
by:
  group: [dingmh]

---

description: Admin, all access.
context:
  application: 'rundeck'
for:
  project:
    - allow: '*' # allow view/admin of all projects
by:
  group: [dingmh]


不同组拥有不同的JOB权限,暂时研究到这吧,以后有时间再研究。