一、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
<?xml version="1.0" encoding="UTF-8"?> <project> <node name="puppet.dingmh.com" description="Rundeck server node" tags="" hostname="puppet.dingmh.com" osArch="amd64" osFamily="unix" osName="Linux" osVersion="2.6.32-220.el6.x86_64" username="root"/> <node name="172.168.10.12" description="Rundeck server node" tags="" hostname="172.168.10.12:57522" osArch="amd64" osFamily="unix" osName="Linux" osVersion="2.6.32-220.el6.x86_64" username="root"/> </project> 多台主机的话,需要做SSHKEY信任
用户组配置文件/data/webupdate/server/config
# # This file defines users passwords and roles for a HashUserRealm # # The format is # <username>: <password>[,<rolename> ...] # # 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权限,暂时研究到这吧,以后有时间再研究。
转载于:https://blog.51cto.com/dingmh/1429012