RunDeck——Web界面的运维控制台

RunDeck介绍

先来点背景介绍:

官网: http://rundeck.org/

官方介绍:

Turn your operations procedures into self-service jobs. Safely give others the control and visibility they need.

中文介绍:

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(乔布斯,:smirk:),体验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服务。

第5步:Job对接一键运维脚本,真正作为Web控制台

创建一个Job: check-python-version 输入图片说明

Step定义:

/home/shen/robotframework/150
pybot -C on -v USERNAME:shen -v PASSWORD:123456 -V node-list.py -V versions.py example-150.robot | tee ../160/color_output.txt

此脚本来自我的另一片博客Robot Framework+SSHLibrary实现自动化运维质量检测

输入图片说明

执行结果: 输入图片说明 执行结果中,居然能把绿色的PASS也打出来。

下面是命令行执行时的结果对比: 输入图片说明

转载于:https://my.oschina.net/fitnessefan/blog/425682

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
web系统运维管理课程设计是为了培养学生掌握和运用web系统运维管理的相关知识和技能。课程设置包括基础理论与实践技能,涵盖了web系统的架构设计、部署与维护、性能监控与优化、安全防护等方面。学生将学习到web系统的基本原理及相关技术,并通过实际操作来掌握系统的搭建与管理,以及常见问题的排查与解决。同时,课程也注重引导学生了解实际工作中的经验与技巧,培养其分析和解决实际问题的能力。 课程设计上,可以采用理论授课与实践教学相结合的方式,通过案例分析、项目实践等教学手段,使学生能够在课堂上学到知识,同时通过实际操作来巩固所学内容。课程内容包括系统基础知识、系统监控与故障排查、系统安全防护、性能优化等方面,同时也可针对行业热点和未来发展趋势进行适当的内容拓展,以满足学生的实际需求。 在课程考核方面,可以采用平时成绩、实验报告、大作业等多种方式进行综合评价,注重学生的动手能力和实际解决问题的能力。同时,也可以设置一定的实习环节,让学生有机会在真实工作环境中实践所学知识,提高其实际操作能力。 总的来说,web系统运维管理课程设计旨在培养学生掌握web系统运维管理的理论和实践技能,使其具备在实际工作中从事相关工作的能力和竞争力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值