[转]服务器自动化操作 RunDeck
From : http://www.oschina.net/p/rundeck/similar_projects?sort=view&lang=25
RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。
RunDeck的作用:
在浏览器中执行服务器上任何非交互命令,比如ps, /etc/init.d/xxx restart,注意ssh之类的要在执行中输入密码的肯定不支持
对接服务器上的一键运维脚本,变成一个Job, 执行时只要点击按钮Run
自动记录命令操作记录和输出。
预览一下官网的几张图片:
Share Standard Operating Procedures
Job Scheduler
Automated Deployment After a Build
Self-Service Test Environments
Data Processing Jobs in the Cloud
注意: 上面的几张部署图中的rundeck方块,如果替换成“命令行运维脚本”,照样能完成各自的目的,但是命令行相比RunDeck,缺少了两样Rundeck特有的特性:
- 在浏览器上按钮操作
- 记录命令的执行记录和输出结果
再看看Rundeck执行Job时的屏幕截图:
Rundeck与自动化工具Fabric的对比
Fabric 是一个 Python (2.5 或更高) 库和命令行工具,用于连接到 SSH 服务器并执行命令。
Rundeck服务运行的结点称为Server,Rundeck还可以添加其他结点叫node,只要设置自动登录所需的ssh帐号和密码,Rundeck就能涵盖Fabric的功能,但是不推荐这样使用,一旦Rundeck服务器无效,就连在命令行完成这些运维也不可能了。
建议的使用方式是:所有运维脚本都存放在Rundeck服务器上,提供命令行调用和RunDeck调用两种方式,为命令行调用提供交互输入帐号和密码的功能,为Rundeck调用提供参数输入帐号和密码的功能。
Rundeck的安全问题
在浏览器中打开Rundeck服务器,并登录后,执行命令的帐号和权限,就是启动Rundeck服务的帐号和权限。
所以如果以root启动Rundeck服务,那么在Rundeck中输入任何命令,都是以root执行,包括rm -rf /,init 0等危险操作都可执行。
建议专门建立rundeck帐号启动Rundeck服务,并控制rundeck帐号的权限。
RunDeck Web界面的登录帐号管理,默认管理员帐号是admin,密码admin,帐号和密码信息,只保存在配置文件中,可用的group是admin和user,可以设置user的权限,比如定义job,执行job等。更高级的权限得使用付费版的RunDeck Pro。
RunDeck服务器的资源消耗
RunDeck服务是一个standalone jar包,占用内存约500M。
RunDeck服务器上已定义Job的执行方式
Web界面上点击Run人工执行
通过RunDeck的命令行工具run执行
RunDeck中设置为周期执行,就像cron一样。
通过Rest API,由其他http client执行,比如curl命令。
上面第2种方式,用命令行工具run执行RunDeck job,好像有点多此一举,但正是此方式特别适用于手工或自动的服务器状态巡查。巡查必须要留下记录,不然只是巡查者的一面之辞。
RunDeck服务器上Job的执行如何判断成功或失败
很简单,执行后,如果rc是0,就是成功,否则就是失败。
rc(Return Code),可以这样查看rc:
shen@debian:~$ ls / 2>1 >/dev/null; echo $? 0 shen@debian:~$ ls /asdfsdf 2>1 >/dev/null; echo $? 2
RunDeck安装与使用实例
RunDeck,是我到现在为止,用过的Web服务器中,安装和使用最简单的。
第1步:在准备安装Rundeck服务的Linux机器上安装jre,推荐OpenJDK
Redhat/CentOS
sudo yum install openjdk-7-jre
Debian/Ubuntu
sudo apt-get install openjdk-7-jre
下面是安装后的版本信息:
shen@debian:~$ java -version
java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-1~deb7u1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
第2步:下载rundeck jar包,并启动服务器
http://rundeck.org/downloads.html
下载 rundeck-launcher-2.5.1.jar,官方说明如下:
Put it in a directory named ~/rundeck
Execute:
java -jar rundeck-launcher-2.5.1.jar
下载有点慢(晚上下载速度5KB/s,早上7点893KB/s),我已下载并放在百度云盘上: http://pan.baidu.com/s/1i3EMcNb。
我放在目录/home/shen/rundeck下运行:
cd /home/shen/rundeck
java -jar rundeck-launcher-2.5.1.jar

最行一行输出的:Started表示已启动完成,:4440表示服务的端口为4440
浏览器中输入网址: http://localhost:4440
输入帐号admin,密码admin,登录:
第3步:创建一个Project,比如adhoc,先体验一下在Web输入和执行命令。


因为只在Rundeck服务器上运行本地命令,所以Resource Model Source删除yml文件,Default Node Executor选择Stub,Default Node File Copier也选择Stub。

进入顶上Tab: Commands
执行本地命令 pwd,应该输出:/home/shen/rundeck



点击Run on 1 Node:
pwd命令的输出:/home/shen/rundeck正是rundeck服务启动位置。
执行 whoami,应该输出:shen
上面两条命令返回状态都是绿色Successed,表示执行成功(rc=0),
接下去尝试一个返回失败的命令ls /asdfsdf

第3条命令返回状态都是红色Failed,表示执行失败(rc!=0),上图中输出的第1行是运行stderr输出,第2,3,4行是Rundeck额外输出,提示出错原因:**Return code was 2**
接下去看看已经执行的3条命令的执行记录和输出,这里体现了Rundeck的最重要的特性。直接在Terminal下执行命令,是不可能事后找回命令输出的。
点击网页第一行右上角的Activity:
上图展示了3条已执行命令的执行编号,命令输入、执行时间、执行者,成功或失败状态。
点击#3,进去查看第3条命令的执行详情:
点击标签页(Summary | Report | Log Output | Definition)中的Log Output,可以看到执行的输出,包括stdout和stderr:
点击View Options,可以设置某些选项:
下面点击网页右上角的Run Again:
更改命令为ls /asdfsdf /,并点击Run on 1 Node:
上图中只显示了输出结果的最后20行,点击#4进去看执行详情:
上图中列出了执行的所有stdout与stderr输出。
第4步:创建另一个Project,比如jobs(乔布斯, ),体验job的定义和一键执行。

点击“Create a new job”,或者点击右上角的Create Job > +New Job…
按下图输入Job Name和Description

在Add a Step中点击Execute an inline script
如上图,Enter the entire script to execute中输入ls /abcd1234 /
点击Save,保存Step定义,一个Job中可以有多个Step,我们的第一个Job是最简单的定义,只有一个步骤,该步骤中直接包含1个命令。

点击Create完成Job定义:
点击Run Job Now:
查看Log Output:
点击网页左上角的RUNDECK,回到首页:
点击Project jobs的链接“1 Execution In the last day”:
可以看到此Project的最近Job或Command的执行历史。
点击网页第一行的Jobs可以看到该Project的Job列表:
下面在添加一个Job: how,探索一下Rundeck是怎么执行Job的。
Step定义为如下脚本:
echo '`pwd` ->' pwd echo '$0 ->' echo $0 echo '`ps` ->' ps

Job执行结果:
Job执行时,创建了一个/tmp/下的临时脚本文件:
/tmp/1-6-debian-dispatch-script.tmp.sh
ps列出的是ps进程及它的祖先进程,其他java就是rundeck服务。
[转]服务器自动化操作 RunDeck的更多相关文章
- 【自动部署】服务器自动化操作 RunDeck
RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程.通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的 ...
- Saltstack自动化操作记录(1)-环境部署【转】
早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用. Saltstack知多少Saltstack是一种全新的基础设施管理方式,是一个服务器基础架构集中 ...
- Saltstack自动化操作记录(1)-环境部署
早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用. Saltstack知多少Saltstack是一种全新的基础设施管理方式,是一个服务器基础架构集中 ...
- 基于facebook-wda的iOS自动化操作实践记录
[本文出自天外归云的博客园] 原理 对于iOS自动化操作,主要靠WebDriverAgent来完成.在Mac电脑上连接真机iPhone,运行WebDriverAgentRunner会在Mac端启动WD ...
- Atitit.web的自动化操作与信息抓取 attilax总结
Atitit.web的自动化操作与信息抓取 attilax总结 1. Web操作自动化工具,可以简单的划分为2大派系: 1.录制回放 2.手工编写0 U' z; D! s2 d/ Q! ^1 2. 常 ...
- Apache服务器常规操作
导读 Apache是世界上排名第一的Web服务器,50%以上的Web服务器都在使用Apache,它几乎可以在所有计算机平台上运行.下面就由我给大家说说Apache服务器的一些常规操作. Apache服 ...
- splinter python浏览器自动化操作,模拟浏览器的行为
Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...
- Python实现浏览器自动化操作
Python实现浏览器自动化操作 (2012-08-02 17:35:43) 转载▼ 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是 ...
- [转载]Python实现浏览器自动化操作
原文地址:Python实现浏览器自动化操作作者:rayment 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有不少介绍,例如使用pamie,但是只是支持IE,而且项目也较久没 ...
随机推荐
- 如何启动或关闭oracle的归档(ARCHIVELOG)模式
参考文献: http://www.eygle.com/archives/2004/10/oracle_howtoeci.html 1.管理员身份连接数据库 C:\Users\Administrator ...
- maven eclipse 插件下载地址
要用的时候,搜索了半天,自己记录下 单独下载地址 http://maven.apache.org/download.cgi eclipse 更新地址 http://download.eclipse.o ...
- OC中的内存问题
常见的内存问题有以下几种: 1.野指针异常:访问没有所有权的内存,如果想要安全的访问,必须确保空间还在 2.内存泄露:空间使用完之后没有及时释放 3.过度释放:对同一块存储空间释放多次,立刻crash ...
- iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载(离线断点续传下载)
前言:使用NSURLSessionDownloadTask满足不这个需要离线断点续传的下载需求,所以这里就需要使用NSURLSessionDataTask的代理方法来处理下载大文件,并且实现离线断点续 ...
- iOS开发之网络编程--1、NSURLSession的基本使用
前言:学习NSURLSession的使用之前,先学习一篇关于NSURLSession的好文章<From NSURLConnection to NSURLSession>或者是国内的译文&l ...
- 关于Assets.car素材问题
最近在做自己的第一个App,由于全程都是自己一个人完成,所以原型设计.素材都得自己找,自己改.遇到了提取Assets.car中的素材的问题,通过网络找到了2中解决方法: themeEngine 使 用 ...
- 由一个activity跳转到另一个activity
定义一个按钮,当点击的时候跳转到另一个activity的界面 1.新建第二个activity 2.在第二个Java源码处继承第一个activity,导入 3.在source中复写Oncreat方法 4 ...
- 解决win2003/2008下注册机或破解补丁程序无法运行问题
win Server 2003/2008 64位系统均遇到注册机或破解补丁程序无法运行或报错或死机的情况,原因是win系统默认开启了文件数据执行保护导致的. (比如3DMax的破解补丁程序等...) ...
- 【等待事件】序列等待事件总结(enq: SQ - contention、row cache lock、DFS lock handle和enq: SV - contention)
[等待事件]序列等待事件总结(enq: SQ - contention.row cache lock.DFS lock handle和enq: SV - contention) 1 BLOG文档结 ...
- 修改Tomcat服务器的端口号
关键技术: Connector子元素下的port是设置服务器端口,而connection Timeout则是服务器连接超时单位为毫秒. 操作过程: (1)采用记事本打开Tomcat安装目录下的conf ...