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

RunDeck的作用:

  1. 在浏览器中执行服务器上任何非交互命令,比如ps, /etc/iNit.d/xxx restart,注意ssh之类的要在执行中输入密码的肯定不支持

  2. 对接服务器上的一键运维脚本,变成一个Job, 执行时只要点击按钮Run

  3. 自动记录命令操作记录和输出。

 

预览一下官网的几张图片:

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的执行方式

  1. Web界面上点击Run人工执行

  2. 通过RunDeck的命令行工具run执行

  3. RunDeck中设置为周期执行,就像cron一样。

  4. 通过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 2.10.3 发布,服务器自动化操作
RunDeck 2.10.3 已发布,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。暂未发现该版本的更新内容,点此保持关注。上个版本 2.10.2 是一个 bug 修复版本,修复了众多由社区

发布于 2018-01-18 00:27:11 | 174 次阅读

RunDeck 2.10.2 发布,服务器自动化操作
Rundeck 2.10.2 已发布,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。该版本的名字为"cafe mocha violet tent",是一个 bug 修复版本,修复了众多由社区报告的

发布于 2017-12-19 23:58:25 | 124 次阅读

Rundeck 2.10.1 发布,服务器自动化操作
Rundeck 2.10.1 已发布,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。该版本的名字为“cafe mocha tomato knight”,更新内容包括主要的 bug 修复,以及一些功能增强:En

发布于 2017-11-23 23:31:05 | 117 次阅读

Rundeck 2.9.4 发布,服务器自动化操作
Rundeck 2.9.4 已发布,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。更多详情可查阅发布日志。下载地址:Source code (zip)Source code (tar.gz)

发布于 2017-10-14 23:23:57 | 176 次阅读

Rundeck 2.9.3 发布,服务器自动化操作
Rundeck 2.9.3 已发布,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。该版本主要解决以下问题:When upload job's definition them project always is filled wi

发布于 2017-08-26 00:27:48 | 115 次阅读

Rundeck v2.9.1 发布,服务器自动化操作
Rundeck v2.9.1 已发布,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。此版本包含许多增强功能,有关详细信息,查看 2.9.0 更新日志Data Capture/Data Passing between st

发布于 2017-08-05 23:59:23 | 203 次阅读

Rundeck v2.8.3 发布,服务器自动化操作
Rundeck v2.8.3 已发布,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。该版本主要是一些 bug 修复,此外还包括:If a step has an Error Handler that is marked as "

发布于 2017-07-01 23:51:03 | 129 次阅读

Rundeck v2.9.0-BETA1 发布,服务器自动化操作
Rundeck v2.9.0-BETA1 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。暂未找到该版本更新内容,请查看更新日志和发行首页保持关注。下载地址:Source code (z

发布于 2017-06-22 00:51:42 | 187 次阅读

Rundeck v2.8.2 发布,服务器自动化操作
Rundeck v2.8.2 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。该版本主要进行了错误修复和一些较小的改进。如果您使用的是Mysql或H2数据库,并且从Rundeck 2.8.0

发布于 2017-04-20 23:56:28 | 155 次阅读

Rundeck v2.8.1 发布,服务器自动化操作
Rundeck v2.8.1 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。暂未发现该版本更新内容,点此查看 GitHub 发布主页。下载地址:Source code (zip)Source

发布于 2017-04-18 01:01:34 | 185 次阅读

Rundeck v2.7.3 发布,服务器自动化操作
Rundeck v2.7.3 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。暂未发现该版本更新内容,点此查看 GitHub 发布主页。从 2.6 升级:查看升级指南下载地址:Source c

发布于 2017-03-12 00:01:55 | 130 次阅读

Rundeck v2.7.1 发布,服务器自动化操作
Rundeck v2.7.1 发布了,这是一个 Bug 修复版本。RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。从 2.6 升级查看升级指南注意这是一个 bug 修复版本IssuesMilestone 2.7.1E

发布于 2016-12-03 23:50:12 | 154 次阅读

Rundeck v2.6.11 发布,服务器自动化操作
Rundeck v2.6.11 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。此版本主要是修复 2.6.9 及更早版本的升级问题。下载地址:Source code (zip)Source code&nbs

发布于 2016-11-16 00:24:28 | 95 次阅读

Rundeck v2.6.10 发布,服务器自动化操作工具
Rundeck v2.6.10 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。更新内容:值得注意的改进:运行作业后功能:计划一次性作业执行Git SCM 插件:从仓库导入作业并“

发布于 2016-11-12 00:18:24 | 204 次阅读

Rundeck v2.6.9 发布,服务器自动化操作
Rundeck v2.6.9 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。更新内容:Notable Enhancements:Job execution will show more info about the step context in the

发布于 2016-08-08 00:19:49 | 260 次阅读

RunDeck v2.6.8 发布,服务器自动化操作
RunDeck v2.6.8 发布了,以下是该版本值得关注的内容:Add framework and project global variablesScript plugins for Workflow/Node steps: allow script file extension to be specifiedScript plugins for Workflow/Node steps: allow key storage automatic readAPI: /api/17/project/name/jobs/import does not retur

发布于 2016-06-10 23:54:19 | 175 次阅读

Rundeck v2.6.7 发布,服务器自动化操作
Rundeck v2.6.7 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。该版本主要修复以下问题: Resource Model source errors are not properly shown in config pag

发布于 2016-04-29 23:47:35 | 166 次阅读

Rundeck 2.6.6 发布,服务器自动化操作
Rundeck 2.6.6 发布了,本次更新包括bug修复和表现改进。(Release 2.6.5 丢失了一些更新说明, 所以 2.6.6包括这些改进。2.6.5 更新说明在此有重复)Startup time improved for Rundeck installs with many (thousands) of projectsFixes for node sources and asynchronous node loadingnew healthcheck for database lat

发布于 2016-04-17 00:28:31 | 119 次阅读

RunDeck v2.6.5 发布,服务器自动化操作
RunDeck v2.6.5 发布了,RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。 RunDeck的作用: 在浏览器中执行服务器上任何非交互命令,比如ps, /etc/init.d/xxx restart,

发布于 2016-04-15 23:53:55 | 119 次阅读

RunDeck 2.6.1 发布,服务器自动化操作
RunDeck 2.6.1 发布,此版本主要修复了 SCM 插件相关问题和作业 执行/调度 切换的问题。下载:https://github.com/rundeck/rundeck/archive/v2.6.1.zip。 RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大

发布于 2015-10-25 00:21:31 | 565 次阅读


Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务