我目前正在阅读Apress出版的新书《Pulling Strings with Puppet》 。至目前为止,我很欣赏该书,并希望在一至两星期内出个书评。这本书钓起我的胃口,想了解更多关于Puppet,所以我决定追根溯源,拜访Puppet的开发团队Reductive Labs的成员,Luke Kanies。
以下是我对Luke的采访内容
你是如何与ruby开始打交道的?
大约四年前,我有一个很明确的想法,关于如何实现一套工具来管理资源,关键是,如何使每个资源类型成为一组的属性的集合,每个属性都有其自己的行为,并让那些资源产生出相应的行为,而不是资源本身自带。(specifically,how each resource type would basically just be a collection of attributes, each with their own behaviour and with the majority of the resource’s behaviour coming from the attributes, not the resource itself.)我不是说这是一个好主意,只是说我有这个想法。:)
当时,我是一个系统管理员(sysadmin),有大量的开发任务,这基本上意味着我是一个Perl的开发者,我是主要用Perl写面向对象程序 。我试着用Perl实现我的想法,却无法处理那些类关系(class relationships)(对于属性和资源类型,按照我的设计,需要构造成类(面向对象思想的类)) 。那时Python是(the shiznit,译者注:原文作者认为合适的)程序语言 ,所以我尝试过,但Python使我的“眼睛流血”(不是空格缩进的语法规则,而是“print”是一条语句而不是一个库函数,“len”是一个函数而不是一个方法( ‘print’ was a statement instead of a function, and ‘len’ was a function instead of a method)) 。
我有一个朋友,传言Ruby语言很酷,但实际上却没有尝试。由于当时我(的开发)是一团乱麻,心想不如尝试用Ruby实现一下。 4小时之后,从来没有见过一行Ruby语言代码的我,也写成一个功能原型。
当我决定全职于Puppet项目时,我已花了很多时间斟酌是否坚持使用Ruby语言(我看来找不到一个原来的讨论的网页链接) ,因为我是正担心是没有多少人拿Ruby来做部署,事实上,当时是一门非常特殊的语言(早在Rails发布前)。
最后,我发现开发人员的高生产率战胜一切想法,所以我(高兴得)跳起来了。
你是如何开始接触“系统管理”的?
显然,我很善于拆解电脑,不那么善于修复。因此,当我去解决这些问题,我倾向于写代码,可以重复打补丁。甚至在我最早的使用电脑那时(我是“新来的”,电脑已经带光盘驱动器和一个500 MB硬盘驱动器),我就可以从不同的驱动器上启动电脑,并且移动目录。
正如我用这种技能获得计算机相关工作,我发现生活总是比较容易的时候,是我可以让电脑去工作,而不是自己做——计算机并不感到无聊的,如果它的抱怨,我也说不上来。事情真正意义上发展,是从MacOS切换到*nix中开始的(是的,1997年我可以用AppleScript进行MacOS几近无值守安装,和其他一切(工作)) 。
我的梦想随着工具集越来越大。最终,我意识到的,只有我,才能去创造我想要的工具。
为什么(会产生)Puppet(项目呢)?
Puppet的得利于它的“资源”概念——针对我们需要管理的东西,它建立了一层抽象(an abstraction),然后将这个抽象层作为操作系统的一种API(应用程序接口)。这个抽象层使我们能够建 立真正便携的配置,实现跨平台,同时也确保声明性(declarative view)的眼光看待世界,而非传统的程序脚本的看法。请参考我的最近的LCA presentation1,获取更多信息。
Puppet项目中的资源抽象层的目的是,它可以成为在配置管理栈(configuration management stack)中最低的一层,但到目前为止,我们还没有时间来超出Puppet做更多事情。
Puppet项目的未来是如何计划的?
只要代码尽快达到关键的API稳定,那么今年有望推出1.0版。我也希望能加入许多令人感兴趣的功能,使每一个主机的资源目录(resource catalog)利用更多。例如,你将全 部资源关系成立,则修改/ etc / ssh / sshd_config之后,Puppet工具会因配置修改而重新启动服务。
我们更趋向于数据库做后台进行目录管理,比较当前yaml输出格式(YAML-dumped)版本,我们将可以获得更多的功能出来,我一时半会儿还无法预见那些功能。
拿Puppet做事,有什么很酷的例子吗?
我认为,Google用Puppet来管理超过6000台Mac OS X 笔记本和台式机,是件很酷的事情。Red Hat制作了一套工具cft2,目的在于把传统的工作方式转变为Puppet代码。于Thoughtworks工作的Julian Simpson先生用Cruise Control做集成,使用Puppet和视觉化来自动测试Puppet配置3。
Puppet项目看起来是一个成功的解决方案,对于sysadmin space的前台控制(配置管理) 。是否有空间(或需要)形成一个Ruby监视框架?如果没有,原因何在?
我不能断定的是,框架所使用的语言有多大影响。我选择了ruby语言,因为在开发过程中,它最适合我我工作,并不是因为我想要一个现有软件Ruby语言版本。
如果有人能找出明确的现有监控软件工具中的缺点,足以需要制作一个新的工具,那么拿Ruby来实现那套工具,可能是有意义。不过,我认为监控的空间现已很压缩了,但我认为,监测空间(the monitoring space)相当拥挤,现在我肯定不想去尝试新的产品来竞争。
你有一个监测应用程序,您满意吗?
幸运的是,我已多年未从事操作管理,所以我没有花很长的时间用监测软件。因此,我没有特别喜欢的应用程序。我听到了很多关于monit,与god(显然是最近推出的) 。
Apress刚刚出版了第一本关于Puppet的书,《Pulling Strings with Puppet》。你有看过没?您怎么看呢?
我没有看过这本书,不过我的工作与James
Turnbull非常密切。在他写书之时,他对开发社区产生了巨大的影响。通过从我的这里汲取信息,他更新了很多在线文档,觉得很这本书像是在开发社区里很受欢迎的。
我刚从澳大利亚的墨尔本回来,James
Turnbull住在那里,他是出色的家伙。另外,以个人身份会见各个社区的成员是件非常有意思的事。
1LCA Presentation (以“luke”为关键字进行查找,并可下载ogg文件)
Precautions:
* 原文的翻译未做授权,请尊重原文作者的权利。
* 译者只对原文作者及其网志感兴趣,对Puppet项目并不关注。
* 翻译是通过“自动翻译”后,加人工修改而成的。如有不当,请指出。不胜感激。
* 对部分读者,访问原文需要“穿墙”。
TODOs:
* Need refinement after hands-on of the project 'Puppet'.
* 'This was back when Python was ...' : the meaning of 'this was back', something can be relied on?
* "'len' was a function instead of a method).": the difference among 'statement', 'function' and 'method' in this context. hint: method is one of the concepts in OO, sure?
* "monitoring space is pretty congested right now", what does it mean?











与Luke Kanies谈Puppet工具
翻译:

neilalaer 进士
抱歉,原文作者不是Ola Bini,而是Pat Eyler,一名ruby geek。由于RSS feed在阅读器里位置比较接近,不小心弄错了。但页面中的“原文作者”无法修改。
02/12/2008