Rexify运维工具
当系统达到一定规模时,传统单机器维护方式已经不再适合,需要一些自动化工具进行管理。
下面将介绍在实践工程中使用的几种方式(针对单一类型系统: linux)。
1. ssh
ssh工具一款linux及其类系统中的利器,常被用来作远程系统登录和数据拷贝,同时还有另外一个重要功能: 远程执行命令。
同时,针对一些小规模的系统(例如几十个节点),ssh也拥有足够的能力对其自动化管理。
在配置完成ssh的无密码key连接方式之后,编写一些bash脚本管理远程主机地址即可。当然,纯ssh工具对管理人员的要求比较高。
可以考虑采用一些第三方工具简化管理,常见工具如puppet, chef, cfengine, ansible以及rexify等。
使用过其中的两款ansible和rexify, 均属于灵巧型-无客户端和服务端,非常适合喜欢干净系统的工程师(最烦在各个子节点上安装agent),也是在ssh的基础上实现的。
2. ansible
ansible是python语言开发的一种框架,基于yaml语法和提供的模块定义各种playbook,对软件进行配置管理,并且能够支持windows(powershell)。
ansible对于常规的运维管理已经足够,如果需要支持复杂的定制化服务,则需要编写playbook甚至新模块来支持。
不得不说,编写playbook也是一个繁琐的过程,其功能常显得鸡肋以及力不从心(如在nosql中作join查询)。
可以通过编写新模块或者脚本对其扩展,ansible新模块的方式不是很方便。
而编写脚本然后远程执行相对简单,但也常遇到一些不可思议的错误。
3. rexify
rexify是perl语言开发的框架,目标即是无客户端轻量级,与ansible不同的是其完全基于模块的方式进行远程管理,充分利用了perl语言的优点。
rexify模块提供的功能足够丰富,在此基础上进行一些整合,即可轻易地支持所需要的功能。同时也对脚本的远程执行支持非常好。