本节书摘来自华章计算机《Puppet权威指南》一书中的第2章,第2.6节,作者:王冬生著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.6 Puppet问答
在对Puppet的配置和功能有了初步的了解之后,很多读者可能不禁会对Puppet的开发语言、选用的语言格式等产生疑问,也会在对Puppet产生了兴趣之后有了自己的想法,想要参与到Puppet的开发中去。下面我们就对大多数读者都会关心的几个问题做出解答。
问题一 为什么选用Ruby语言开发Puppet?
为什么选用Ruby作为Puppet的开发语言呢?Puppet的作者Luke Kanies是一名系统管理员,多数情况下Luke Kanies采用Perl来编写程序,但当他想要试着编写脑海里所想程序的原型时却不能从Perl中获得想要的类别关系。然后Luke Kanies尝试了Python,因为这一想法产生于2003年,而那时写Python的人还比较少,几乎所有人都在谈论Python有多么的神奇,但是尝试之后Luke Kanies却觉得他完全不能用Python来编写想要的程序。一个偶然的机会,朋友向他提起Ruby的功能很强,所以Luke Kanies尝试了Ruby,之后仅仅用了4个小时的时间,他就从完全没有接触过Ruby的新手变成了一个工作模型的熟手。从那以后Luke Kanies从未试着用其他语言,也从未后悔当初选择Ruby开发Puppet。
在笔者看来,不同编程语言有不同的优势,没有最好的编程语言只有最适合的编程语言。Ruby简单、方便、快捷和面向对象开发等优势,使它为Puppet后续蓬勃发展奠定了良好的基础。
问题二 为什么Puppet用自己的语言格式而不用XML和YAML?
Puppet 语言使用的manifests有着非常人性化的操作界面。而XML和YAML作为两个围绕计算机处理能力而设计的数据格式,其人性化操作界面功能非常差。尽管一些人比较适应识读和编写XML和YAML的代码,而实际上人们也习惯于浏览网页而不是直接阅读HTML。同理可得,使用XML和YAML的数据格式将会限制操作界面陈述表达的能力,而这一进程将会区别对待XML配置。
而Puppet 2.6.0实际上就加入了使用Ruby作为输入格式的功能,使得Puppet可以完全用Ruby语言来编写。然而,我们需要谨慎应用这一功能,并且需要避免可能出现故障的情况。Ruby的完整语法功能往往特别多,我们相信系统管理者应该能够在更高级别的系统中对他们的数据中心予以模型化。性能和功能维护的最佳平衡点往往就是采用Puppet DSL来编写显示程序。
问题三 Puppet都适合于什么场合?
Puppet能使任何想要降低维护计算机成本的机构从中受益。然而,因为投资回报率与多种因素相关,例如当前的成本开销、现有计算机之间的差异、停机成本等,所以,任何机构在决定是否应将投资倾斜于配置管理工具,关于Puppet的花费多少才合适的情形下,都可以先仔细了解一下自身的实际情况。如果企业确实面临以下问题,则完全可以使用Puppet作为解决方案。
服务器管理的成本很高。
花费大量资金在停机维护上。
拥有大量近乎相同的服务器。
在服务器配置方面需要的灵活性和灵敏性。
问题四 如何向Puppet贡献代码?
Puppet作为开源软件,其之所以广受追捧不仅仅在于配置和应用的实用性和灵活性,更在于其能够不断更新完善并吸纳好的建议。而Puppet也欢迎广大计算机爱好者向Puppet贡献代码。在对Puppet的理解和运用到达了一定境界之后,可以通过以下途径向Puppet贡献代码。
首先,可以加入一到两个邮件列表,官方推荐http://groups.google.com/group/puppet-dev/
和http://groups.google.com/group/puppet-users/
;或者可以加入irc.freenode.netIRC。
如果读者热衷于开源软件发展和推动Puppet的进步;还可以访问http://projects.puppetlabs.com/projects/puppet/wiki/Development_Lifecycle
,这里有关于Puppet的开发和提交方式等信息。