Puppet和Chef工具的新功能.看起来他们正在做的工作可以通过
shell脚本来完成.也许它是在shell脚本中完成的,直到它们出现.
我同意他们更具可读性.但是,除了可读性之外,还有其他优于shell脚本的优势吗?
特定于域的语言会对您编写的代码量产生很大影响.例如,你可以说,之间没有太大区别:
chmod 640 /my/file
和
file { "/my/file": mode => 640,}
但这些之间存在很大差异:
FILE=/my/file chmod 640 $FILE chown foo $FILE chgrp bar $FILE wget -O $FILE "http://my.puppet.server/dist/$FILE" # where the URL contains "Hello world"
和
file { "/my/file": mode => 640,owner => foo,group => bar,content => "Hello world",}
如果wget失败会怎么样?你的脚本将如何处理?如果在你的脚本中有一些东西需要$FILE来存在正确的内容,会发生什么?
你可能会争辩说,人们可以把回声“Hello world”>脚本中的$FILE,除了在第一个示例中脚本必须在客户端上运行,而puppet在服务器上编译所有这些.因此,如果您更改内容,则只需在服务器上更改内容,然后根据您想要的内容将其更改为多个系统.并且puppet会自动处理依赖关系并为您传输问题.
没有比较 – 正确的配置管理工具可以节省您的时间和复杂性.你尝试的越多,shell脚本就越不合适,用puppet做的就越省力.