CheungSSH 3.0 国产自动化运维堡垒机
#点击图片,报名参加深圳源创会#
项目地址:http://git.oschina.net/CheungSSH_OSC/CheungSSH
建议您使用git命令下载,因为文件比较大,如果用浏览器,和可能下载不完整
在当今互联网的发展大势下,云计算和大数据已经成为主导。在两大趋势下,企业的服务器数量日益增多,如何有效的管理众多的服务器,已经成为了各大公司考虑的问题。在传统的人工管理模式下,已经很难做到高效的维护,是人管理服务器?还是服务器管理人?
为了解决这个问题,我痴迷于运维自动化研究,目前后端使用的Python语言+Django的Web框架,前端使用Bootstrap+Javascript+jQuery框架开发的CheungSSH Web3.0自动化运维系统,通信协议采用Linux系统自带的SSH协议,无Agent。并通过Paramiko库完成自动化登录,本系统可以基本满足日常的自动化运维需求。系统全程由我自主研发,不采用任何第三方工具和接口。
系统设计不足之处请各位朋友指出,也感谢大家的支持和信任,如果在使用过程中遇到任何问题,或者有任何的意见和建议,欢迎您与我交流学相互习。
1.1
CheunSSH背景
Cheungssh 开源项目
CheungSSH全程由张其川自主研发,后端采用的是Python语言,Django的web框架。前端采用Javascript、jQuery脚本语言,Bottstrap模板系统和div+css布局。前后端通信采用Restful API接口衔接。在2014年第一次推出shell版本,在2015年发布web2.0,目前的使用者和关注用户已经超过1000人。现在最新版本是cheungssh web3.0,前端和后端设计师都是张其川。
1.2
CheungSSH特点
无Agent,采用Linux系统自带的SSH通信协议,安全程度最高。
支持PC和手机终端,
支持任务流程编排
支持资产自动收集
支持主机状态自动检查
RestFul API
Web系统
自定义日志报表
1.3
CheungSSH 功能清单
1.4
CheungSSH安装方式
一键安装
条件:
需要联网(已有Docker则无需联网)
系统为CentOS 6.5(以上版本或7都可以) 64bit
第一步 下载软件包(建议在开源中国下载,国内服务器网速更快)
http://git.oschina.net/CheungSSH_OSC/CheungSSH
第二步
解压软件包,进入bin目录,然后执行安装脚本:
等待安装完毕后,即可打开网页。
第三步 访问页面
访问您安装CheungSSH系统的IP地址,在上面安装的时候指定端口
比如笔者的服务器地址是:http://192.168.1.1
输入后,系统自动为您跳转到登陆页面,默认登录用户是:cheungssh默认登录密码是:cheungssh123456
注意:如果您登录的错误次数超过5次,系统会锁定您的IP地址,以后即便您使用正确的账号密码也不能正常登录系统,一天以后才能自动解锁,这是CheungSSH的安全机制。在此期间,您可以更换IP地址登录。
1.5
启动CheungSSH服务
默认情况下,CheungSSH是随系统启动的,无需手工启动,如果您想人工干预,请访问:service cheungssh start
2.1
服务器配置
在使用CheungSSH自动化系统之前,您需要提前录入您的远程主机的信息,这样CheungSSH才能为您自动执行任务。否则,自动执行根本无从谈起。CheungSSH支持的登录方式有SSH密码登录、SSH-Key登录两种方式。
2.1.1 单个添加被管理服务器
最后点击保存。
上面的刷新图标表示cheungssh在请求该服务器的状态。如果该服务器状态正常,则会显示如下图标:
2.1.2 批量添加服务器
您可以把您准备的txt文件,安装cheunggssh要求的格式,复制粘贴到里面就可以了。注意格式! 如果是“#” 开头的,则表示注释!
3.1
网络拓扑
到目前为止,您通过服务器配置添加了服务器信息,并且选择了主机连接的节点,那么到现在为止,您可以看到如下的拓扑情况:
3.1.1 添加拓扑节点
到现在,您只看到了您的Linux服务器和CheungSSH自动化系统的拓扑图,但是,这可定不够用,比如,您的网络中,除了Linux服务器,还有路由器、交换机、防火墙等等网络设备,当然这些设备不归CheungSSH管理,CheungSSH也没有对这些设备做管理。但是,您却可以通过创建节点的方式,把他们加入网络拓扑中。
保存后看到如下列表:
此时,您刷新web页面,然后定位到【拓扑布局】中,可以看到拓扑发生了变化
再回头,您再次添加一个服务器到系统中,并且选择该服务器的连接节点为您刚才创建的“SDN路由器”,保存后,您可以看到这个服务器连接着的就是SDN路由节点上了。
再次刷新页面,去看看网络拓扑:
3.2
保存拓扑布局
默认情况下,系统采用自适应布局。这是一个随机算法。您每一次打开网络拓扑的布局都不会相同。比如,您觉得系统的自动化布局不方便您观察,在您拖动了设备的布局后,比如这样:
当您再次刷新页面,打开这个布局的时候,页面的布局会显示您上次保存的布局。
3.3
执行设备属性(双击进入终端)
为了方便使用,作者特意为大家定制了双击网络设备图标,就进入交互式命令终端,在这里您可以执行如cd,top,ping这样的交互命令,但仍然不支持部分交互命令,比如vim等。
您可以双击设备图标,或者是右键,打开终端即可:
执行一个ping 的命令:
如果您想退出终端,您可以exit或者是logout,当然这些都是linux系统命令,再或者您可以直接关闭这个终端界面。
注意:在这个终端里面,您可以cd目录,ping、top等命令都可以,但是不支持比如vim、crontab这样的命令,如果您想要vim打开一个文件,请您到文件管理功能使用。
另外,在这里的属性功能【终端】和【资产管理】中,只有服务器才具备这样的功能,其他非服务器,比如防火墙,路由器,是不具备这样的功能的。
4.1
命令执行
该功能如同Xshell、SecureCRT、Putty一样,可以批量的发送系统命令,让Linux服务器执行。
4.1.1 选择要执行命令的服务器
默认情况下,系统已经选择全部主机,如果您要针对部分主机进行执行命令,请您首先选择要执行的服务器。
按下回车:
4.1.2 把命令加入计划任务
该功能尚未开发,请等待下一个版本增加
5.1
文件上传
文件上传,是指您把您当前的PC电脑上的文件批量的上传到远程服务器上,在这里,您可以很轻松的通过拖动方式上传,只需要动动鼠标就搞定。
第一步,您应该选择要上传的服务器:
选择好了以后,点击【确定】,然后进入下一个页面。
5.1.1 文件上传-快速上传
点击【快速】,意思是速度快,步骤简单
在上面的输入中,是输入您要把您的文件传到远程服务器的哪个目录下,注意,比如您选择了10个服务器,10个服务器的目标路径都一样,那么您在这里点击【快速】即可。但是如果您10服务器中,路径不是都一样,那么您必须选择【高级】,这样的动作,是为了区分路径而已,下面演示是【快速】方式。
在上面,请你把文件拖放就行,然后CheungSSH立马给您上传到远程服务器上去:
以上是快速上传。
5.1.2 文件上传-高级上传
意义在于,如果您要上传文件的10个服务器中,加入有3个服务器的路径不是一样的,那么在这种情况下您就可以使用本功能,单独执行不一样的路径
现在,点击【高级】上传:
5.2
文件下载
文件下载,作者设计的比较先进,如果下载顺利,真的还需要点两次鼠标,所有的远程文件就自动的下载到了您的PC电脑上了。
现在,请您首选选择要在哪些服务器上下载文件:
选择好了服务器以后,现在选择远程服务器的路径:
【高级】选项说明:比如您要下载10个服务器上的文件,但是这些文件的路径并不是都一样,那么您就可以通过这个选项来进行指定,指定好了以后,您需要手工启动下载。
【快速】选项说明:比如您要下载10个服务器上的文件,这些文件上的路径通通都一样,那么您只需要在这里输入路径,CheungSSH系统就替您一键下载,当然步骤更简洁一些。
如果在下载过程中,有部分服务器下载失败了,那么CheungSSH会弹出提示,告诉您是有部分失败了,然后您可以点击【下载】就能确认下载文件到您的PC电脑上了:
如果您要继续其他下载任务,请您重新选择一次【服务器】后开始即可。
6.1
计划任务
该功能暂时未开发,等待下一个版本增加。
7.1
上传秘钥
在CheungSSH所有的文件上传的功能中,都是通过拖放的方式上传的。
当然了,上面我只是演示行的放几个文件而已,不要在意文件名。此时,如果您有服务器是通过SSH-Key登录的,那么在服务器配置中,您可以做如下选择:
8.1
上传脚本
在cheungssh中,一样可以执行脚本,创建脚本的方式有两种。并且友好的支持中文的显示和脚本的中文名
第一种是从您的PC电脑上传一个脚本文件,当然了,还是以老用法,直接拖动就行:
第二种上传方式,直接点击
输入脚本名:
开始写入脚本内容:
写好了以后,请点击
8.2
查看脚本内容
查看脚本内容,只需要点击
8.3
执行脚本
执行脚本,请点击
点击了下一步后,可以输出脚本参数,当然你可以可以不输入,直接下一步就行:
现在,点击【下一步】执行开始出初始化脚本:
现在,我手动点击【执行】按钮,那么久等待脚本执行结果了:
下面,就是显示脚本执行结果:
注意:每当您点击
9.1
命令记录
在【命令执行】功能中,所有的命令执行记录均被记录到了这里.
关于【状态】的解释:
【成功】 示执行命令是正确的,也就是说echo $?的值是0;
【失败】表示执行的命令可能是失败的,也可能是服务器的问题
【执行中】表示这个命令还在执行过程中,没有结束,比如ping,top等这样的长执行命令
对于上述的三种状态,如果您要查看详情信息,可以直接点击它,然后查看详情,如下:
9.2
操作记录
在CheungSSH系统中,所有的访问,比如执行命令,添加主机配置,删除资源等等,所有的操作都被审计记录在这里。
可以点击
9.3
登录记录
凡是登录过CheungSSH系统的用户,都有记录什么时候登录,在哪里登录的。
10.1
命令黑名单
在传统的SecureCRT、Putty、Xshell客户端中,均可以执行任何命令(除非Linux权限限制的),这样往往存在一些安全隐患,比如root错误的执行了 shutdown、init、rm等高危命令,而无法拦截导致系统崩溃。CheungSSH针对这个情况做了封装,您可以把您认为是不可以执行的命令加入系统中,那么用户在通过本系统执行命令的时候,如果发现是拒绝执行的命令,那么则会拦截。
添加命令黑名单,比如 uptime
这样,在批量命令的时候,如果执行 这个“uptime”命令,就会被拦截下来,而不会被执行:
上面的显示很清楚,软件作者在开发的时候,考虑了如果您是超级管理员,依然是可以执行任何命令的,但是需要确认执行。假如您是普通用户,而不是超级管理员,那么系统根本不会提示您是否需要强制,而是直接拒绝!
注意:超级管理员会提示是否强制,而普通用户则不会提示,直接拒绝
10.2
登录阈值
为了登录安全,CheungSSH在登录验证的时候,如果一个IP连续登录的次数超过5次,那么CheungSSH系统则会拒绝这个IP的所有登录,而不管密码是否正确,就像是银行卡一样。
设置登录阈值:
注意:如果您的IP不幸被系统锁定,请您换一个IP重新登录,登陆后可以解锁该IP
解锁IP:
删除该IP即可登录。
11.1
远程文件
作者的设计初衷是为了让所有人都能方便的打开网页,就能查看Linux系统文件内容,而不再用cat、vim、more等命令去打开文件,这对于我们一个普通的研发或者是财务人员来说,显得太繁琐,因为他们很可能不会这些命令,其次还要有Linux密码等等条件,有了这个功能,您甚至可以用iPhone或者是SAMSUNG、HUAWEI等等手机的浏览器,直接看文件内容,当然不管是文件还是日志,只要是系统存在对的一个文件,都能看。
首先,您需要添加
保存好了以后,就能看到如下条目:
现在,您可以点击
注意:这里之所以能选择服务器,是因为在【主机配置】功能中,已经添加过这个服务器
12.1
自定义资产
为什么有自定义资产呢?是这样的,CheungSSH作者在设计的时候,只是象征性的加入了某些资产要素进行采集,比如磁盘、CPU、内存等,但这些往往不能适用于每一个用户的需求,比如您可能需要采集Tocmat的连接数、在线用户数量等等不尽相同的需求。那么在这里,为了能让您的体验更好,CheungSSH作者加入了【自定义资产】功能,也就是说,您可以通过自行定义一个命令,比如您要统计Tomcat的连接数,它是去扫描一个文件内容然后进行各种计算,那么对于系统来说,它就是一个命令去完成的。所以,您只需要把您进行统计的命令加入即可,这就是自定义资产功能。然后,系统最终得到一个数字,录入系统。
输入项解释:
【名称】就是您定义一个资产的名称,比如“我的Tocmat”;
【单位】您随意取一个单位,这个单位会在【资产信息】的表头中显示,如果没有,您就不写;
【数据类型】就是您这个采集的数据是什么类型的,一共三种选项:数字,表示一个数字,比如链接数量,就是一个数字;日期:就是日期;字符:就比如ABCD这样的数据就是字符,您在这里准确的选择,讲有利于系统自动计算。比如数字类型的资产,系统自动进行折现绘图。
【资产类型】分为静态和动态,CheungSSH作者在设计的时候曾考虑过这样的情况,比如“Tocmat的连接数量”,这一定是一个命令查询的结果,也就是说是执行命令得来的;再比如“维保厂家”,这是一个固定的标记,而不是命令得来的。所以作者把需要执行命令得来的数据称为“动态资产”,把不用命令执行得来的数据称为“静态资产”。
【命令】也就是用来采集数据的命令,当然,如果您的是静态资产,这里就不要写命令了。
保存即可:
注意:CheungSSH系统后台自动采集资产,间隔时间是30分钟一次,您也可以自行修改
12.2
资产信息
上面讲述了自定义资产,当然。不管您是否需要定义自定义资产,那么系统都会每间隔30分钟后去自动采集数据,采集的数据就会显示到这里来。那么被采集的服务器是从哪里来的呢?当然是您在【主机配置】的时候,输入了主机的账号密码等信息,CheungSSH系统默认就替您采集了。
注意:被采集资产的服务器,账号必须是root权限,否则无法采集,因为有些信息不是root账号就无法采集,至于为什么,这个我想您应该明白。另外,如果您发现采集的时间不是最近的,那么很可能是被采集的服务器出现了什么问题,比如账号密码不对了,网络不通了等等。
12.2.1 每一个资产的历史记录
在第一个资产页面中,那里看到的是每一个资产的最近统计数据,如果您要开一个资产的历史统计数据,那么请您点击它的主机名,然后进入另一个页面中:
12.2.2 查看数字类型的资产折线图:
点击是数字类型的项,就可以进入如下页面:
注意:历史资产数据点,默认最多是50个
13.1
应用管理
还记得您常用的 service httpd start 、service sshd stop这样的命令吗?这些都是在停止启动服务,为了让研发人员,或者是快速操作服务,CheungSSH作者在这里给大家制定了简单的应用管理。在这里,您可以把上面的命令加入进来,然后平时只需要点击一下按钮就能执行了,是不是方便了很多呢?
选项解释:
【服务器】就是您要在哪个服务器上执行这个命令;
【应用名】给这个应用起一个名字;
【检查命令】默认是echo $? 比如启动Tocmat的时候,可能需要检查网页才能判定,那么您就在这里输入您的命令就行了。系统根据执行的命令echo $?是否返回0进行判断是成功还是失败;
【归属用户】哪个用户可以操作,当然了超级管理员无限制;
然后点操作栏的
执行完毕后,我们看下结果:
14.1
应用和软件部署
首先,本功能不仅仅是应用部署,更可以软件安装、应用部署,它就相当于是某软件的YML功能一般,可以自行定义要操作的步骤。所以,不管您是Tocmat应用代码更新上线,还是Apache软件安装,等等功能操作,都可以完成。
不知您是否做过Tomcat 代码更新上线,安装过Apache、MySQL等软件,DB备份。像这些操作往往都不是一条命令可以完成的,都是多个命令完成,并且有的时候还有必要判断上一个命令是否执行成功,如果失败了的话,还需要立即终止并且需要回退。像这样的操作,CheungSSH完美的解决!
首先,在这里假设第一个实际案例,比如Apache软件安装。现在,粗略的梳理一下安装软件的准备条件和过程。
Apache自动安装实例
准备软件包
http-2.4.25.tar.gz 一个
httd.conf 配置好的一份
假设无依赖,并且已经安装好了gcc编译环境(万一没有gcc,就yum install –y gcc*)
被执行任务的服务器
数量自定义,可以多个(灰度发布模式,也就是逐个服务执行)
操作命令步骤梳理(每一个步骤执行必须成功,否则终止)
从您的PC上传软件包http-2.4.25.tar.gz到CheungSSH服务器上(当然,您得先在互联网上下载这个软件到您的PC电脑上)
从CheungSSH服务器上传http-2.4.25.tar.gz软件包到被安装软件的服务器上
在CheungSSH服务器上,解压那个软件包
在CheungSSH服务器上,进入解压包目录,执行./config程序开始安装
make && make install
移动准备好的配置文件httpd.conf到指定位置
执行启动命令
完成
注意:作者只是为了演示使用方法,您没必要根据作者的步骤来安装apache,请您务必根据您当前服务器环境决定您的安装流程。
安装流程图
注意:上面只是作者本人安装Apache的举例,如果您的安装步骤不相同都没关系,您完全可以自行定义。在这里只是为了演示而已。
现在,开始创建任务:
点击
现在,可以看到页面中出现了一个服务器,还有第一个步骤,那么先选择一个服务器吧,什么意思呢?就是要选择一个服务器,然后在这个服务器上面执行我在上面梳理的那些步骤。
点击“服务器”旁边的下划线,然后弹出服务器选择界面,选择一个服务器
注意:复选框只能选一个服务器,不能选多个。如果要选多个,就需要添加多个服务器步骤。
现在已经选择好了一个服务器了,那么就应该给这个服务器设定执行任务的过程图(梳理一下过程)
可以看到,是分了服务器的,而且每一个服务器中有N个步骤,执行完了一个服务器的N个步骤以后,再继续执行下一个服务器的N个步骤,直到执行完全部服务器的步骤。为什么要这样设计呢?就是考虑到,您的一组业务服务器,比如Tomcat的安装目录不是完全相同等因素。CheungSSH作者只是为了您能灵活使用。当然,这也会带来一个问题,假如有100个服务器需要操作,那么就要添加100次服务器了。这个比较繁琐,后续会升级,增加一个复制步骤的按钮和调整步骤顺序的按钮。
注意:执行过程中,如果遇到任意一个步骤是失败的,那么都会终止后续步骤的执行,为了保证安全嘛。
我们按照上面的执行步骤逐个创建:
第一步 从您的PC上传软件包http-2.4.25.tar.gz到CheungSSH服务器上(事前已下载好该软件),您可以直接拖动文件到网页中,直接上传
第二步 在CheungSSH系统上,上传刚才的软件到远程“我的Docker测试”服务器上去(也就是相当于我们常用的scp命令一样)
创建完毕第一个步骤,看看效果:
第三步 解压前面上传好的httpd文件(当然了,此时还没开始执行任务,只是预先写好而已)
另外,如果您想删除某一个步骤,可以点击
详细介绍,请点击“阅读原文”......
项目地址:http://git.oschina.net/CheungSSH_OSC/CheungSSH
建议您使用git命令下载,因为文件比较大,如果用浏览器,和可能下载不完整
终于等到你,最强 IDE Visual Studio 2017 正式版发布