旧的服务器管理,基本上就是用ssh登录到服务器上面,进行一些操作。需要做的事情一般是:定期安全更新,新版本发布,新应用安装等。 这样有很多缺点:人工操作引发错误,服务器状态无法跟踪,人工操作繁琐耗时等。
我觉得好的服务器管理方式应该是这样的:
- 能够定义服务器的功能,通过写程序或者配置的方式说明服务器到底是怎么样的
- 通过这个定义,自动化地配置服务器
- 可以手动或者自动修改定义,更新整体的架构
- 整个过程不要引入太多的复杂度,更好地反映服务器管理的本质
以前我学习了一段时间的chef,整体架构偏复杂了。因为是server/agent架构,服务器上面要跑一个chef的监控程序, 这样对于大规模的服务器来说是性能更好,但是对于大多数小公司来说,没有agent的模式就足够用了。执行速度上也偏慢。
现在重新学习了解了ansible,觉得在复杂度和易用性上面平衡得很好。主要有几点:
- 和host服务器的通讯采用ssh的方式,host不需要安装额外的软件,除了python-simplejson
- module插件是传输一个python文件到host执行,参数命令行传入,简洁快速
- 整体架构上面尽量减少了复杂度,概念上只有playbook – role – module,我觉得足够满足抽象了
用ansible这种服务器配置管理工具,我可以做到以下事情:
- 设置翻墙/下载服务器,需要的时候可以快速创建
- 定义公司的服务器架构,进行归一化配置,自动更新
- 遇到性能瓶颈或者需要更新服务器的时候,快速创建应用服务器
以后小规模的服务器管理,就变得很简单了。
原文
http://blog.linjunhalida.com/blog/ansible/