- 论坛徽章:
- 0
|
本帖最后由 busyant 于 2012-07-10 17:50 编辑
回复 76# jiaolt
谢谢你的回复,以下是我的见解:
CFEngine 的好处在于,只需要学习一个工具、和语法。只要熟悉了,出错的机会会越来越少。当然谁也不敢保证不会写错,多一个括号,少一个空格什么的。
而脚本的灵活性带来的问题就是太多变数,每个管理员有自己的实现习惯,有的人可以写得很精炼但是新手可能一下看不懂。
所以,CFEngine之类的工具优势在于知识的传递有保障,别人不会看不懂,就算看不懂,参考官方的手册就可以了,很简单。
对于调试,的确是这样,任何一个刚改都需要前期的调试。CF的调试也很麻烦,我用的还是CF2版本,有时候错误输出很莫名。用脚本不错,可以自己添加调试输出。
遗留的CF配置文件,我认为不是问题,既然在用CF,那你就必然一直在使用,语法不会忘记。只要打开来看一眼就明白了。而脚本则不一定,特别是没怎么加注释的脚本,又特别是看别人写的脚本的时候,问题又回到知识的传递上了。棒要交接到位。
CF的配置也有特点,就是可以用简单的几句话来实现,比如,要在配置文件里面加一行文字 :
gi::
{ /etc/sudoers
Backup "off"
DeleteLinesMatching "jl ALL = NOPASSWD: /etc/init.d/mysql, /bin/su - serv"
AppendIfNoSuchLine "jl ALL = NOPASSWD: /etc/init.d/mysql, /bin/su - serv, /bin/rm -rf /opt/tmp/*"
}
而用shell script 则需要
- 先grep
- 判断返回值
- 用sed或者其他方法删除 第一行
- 再grep
- 判断返回值
- 用sed或其他方法追加第二行
一个使用类似自然语言,一个使用command,易读性的对比,不言而喻。
前面我也说了,脚本的确是好东西,我自己也经常用脚本来批量查询服务器信息。但需要固化下来的操作流程,用CF之类的工具是不二之选。
当然CF也有它的问题,语法上手比较难,前期架构设计需要花大力气。配置文件多了后冲突的检测也需要投入精力。我现在用的是 CFEngine 2.x 语法本身就有问题,据说CF3 有了长足的进步,变成类似面向对象的语法了,应该容易一些,我没有测试过。
欢迎继续探讨。
----------
题外话:
兄弟你潜水够厉害,2005年注册,7年帖子一共才16个! 佩服佩服!
![]()
|
|