Puppet对于做DevOps的同学来说,是个熟悉的名字,但仍有许多人并不了解它。那么我先来简单介绍一下:Puppet是由Puppetlabs公司开发的系统管理框架和工具集,被用于IT服务的自动化管理。由于良好的声明式语言和易于扩展的框架设计以及可重用可共享的模块,使得Google、Cisco、Twitter、RedHat、New York Stock Exchange等众多公司和机构在其数据中心的自动化管理中用到了puppet。半年一度的PuppetConf大会也跻身于重要技术会议之列。AWS的CloudFormation文档中有一段关于Puppet的介绍,其开头是这么说的: Puppet has become the de facto industry standard for IT automation。
同时,puppet在Openstack中也发挥着重要的作用:Openstack-ci社区将其用于Openstack wiki系统,持续集成系统等等的运维管理(参见http://puppet-dashboard.openstack.org:3000/);此外社区的puppet-openstack项目用于完成Openstack服务的自动化部署和管理,目前已经在stackforge中托管并通过Openstack的Gerrit系统来管理代码;此外,Cisco,RedHat,Miriantis等多家公司的Openstack发行版或部署工具中均使用到了puppet-openstack。目前,Puppet在UnitedStack的日常运维管理和产品的自动化部署中也起到了重要作用。
好了,刚刚还不了解Puppet的读者们现在已经知道Puppet是一个牛逼哄哄的自动化运维管理工具。可能有人已经下完了软件包跃跃欲试了,先别急,有关puppet的使用资料在网上可以搜到一大堆,官方的文档也详细到了“令人发指”。关于puppet的使用经验分享和各种特性的深入探讨以及如何使用Puppet管理Openstack部署的方案分析,哦,都不在本文的讨论范围之内。
本文的重点是八卦一下Puppet为什么可以这么成功。同时,为避免引起非Puppet程序员感官上的不适,我屏蔽了各种代码级别的展示和对细节的探讨。 Luke Kanies的技术之路
故事要从Luke Kanies,这位twitter昵称与puppet的服务器端进程名同名的哥们说起,在很久很久以前... http://onexin.iyunv.com/source/plugin/onexin_bigdata/https://lh4.googleusercontent.com/u9k6iGl-DlBo8NmlpPOuCdMO3WXKOnWIlcBM6FPJ72az4gmE1iSrE4j-QEwSMZF2AyUg2xLaJTtJzQFVvhChLEh53Sgd26lXPUtIQ179MP_euJrTIQqh1CFF 成长:苦逼的学生时代
在1992年的时候,Luke进入诺思兰学院成为了一名化学专业的学生,这是一所位于威斯康辛州的小学校,全美排名在178左右徘徊。
小伙子很争气只呆了一年就跑到了大名鼎鼎的里德学院,成为了乔布斯的校友。不过倒霉的是里德学院被评为全美十大苦逼学校之一,6年毕业率仅为75%,也就是有1/4的同学拿不到毕业证。有别于很多文理学院自由选课的模式,里德的大一学生必须完成规定的人文必修课程,学习希腊及罗马的古典文化。这门课程已经有超过50年的历史,里德动用了学校最为强大的师资力量来为学生奠定文化基础。这还没完呢,之后学生还必须在四个拓展领域选课:文学、哲学、宗教、艺术方面;历史、社科、心理学方面;自然科学方面;还有数学、逻辑、语言学或外语。大三学生必须通过专业测试,大四学生则必须完成专题毕业论文才能毕业。毕业论文并不可怕,可怕的是里德学院的毕业论文的学时是一年,所以有想出国留学的同学,请密切关注另外九所大学的名字…
该来的还是会来的,1996年,Luke大四了。要想顺利毕业的话,他必须得修完这长达一年的论文项目,这意味着在这一年内他必须要动手设计和实现,并用实验数据证明,最终组织成论文来完成课题。Luke的论文题目是Site-directed Mutagenesis in Soy Cytosolic Ascorbate Peroxidase,我推敲了半天,中文翻译大致是:大豆抗坏血酸盐过氧化物酶胞质的定点诱变。 打工:漂泊和积累
万幸的是,我们不用去研究一口气都念不完名字的论文。扯远了,Luke毕业后没去找一份和化学相关的工作而是去了Cypersite当起了Mac系统管理员。在Cypersite的日子里,Luke使用AppleScript干着行MacOS的管理工作,不过干了不到一年还没转正的时候,他便跑路了。
因为在97年的12月份,他在Metro One Telecommunications找到了一份系统管理员的活儿。Metro One Telecommunications当年可是纳斯达克上市公司,主要业务是提供电话号码查询服务。在其巅峰时,公司在全美拥有7000名雇员,然而在2009年初,在售完最后一部分的经营业务后,该公司还剩余3人。瞄了一眼Metro One今天的股价:0.01美元。通信行业早已是昨日黄花了,吴军博士已经在《浪潮之巅》中将这些历史描述得尽致淋漓。
又扯远了,在Metro One的1年零9个月里,Luke的主要工作是管理分散在全美的30个呼叫中心,包括了呼叫中心计算设备的部署和设置,外加从总部对其进行不间断的维护。看到这里,我突然想到某家startup的创始人之前在电信部门做过相同的工作,后来他去做了一个很炫的可视化部署工具,我猜测通信行业的部署工作充满了重复的机械劳动,有一种自动化的强烈需求。这里提一下,provision曾是电信行业中的一个术语,专指安装通信设备前的准备工作,而在devops中常说提起的bare-metal provision是指在计算机上安装操作系统或者hypervisor的过程。
在1999年,Luke离开了这家电话公司,在BlueStar担任系统工程师,BlueStar是一家卖解决方案的经销商,主营业务有:RFID, Auto ID, POS, Mobility products。Luke主要负责一家DSL ISP服务器端基础架构的设计和实现。他构建了一套自动化且可集中管理的系统,并负责基础架构项目的持续开发以及实施和维护。
Luke在“蓝翔”干了还没到两年,又跑去了卡特彼勒融资服务公司担任顾问,提供系统自动化管理相关的咨询。我查了下,卡特彼勒公司位列世界500强,成立于1925年,是世界上最大的工程机械和矿山设备生产厂家、燃气发动机和工业用燃气轮机生产厂家之一,也是世界上最大的柴油机厂家之一。我在网上没有查到Luke在这段时间具体干了些什么,只能感叹Luke作为一个系统管理员是怎么混进一个高帅富的融资公司担任顾问的。 创业伊始:对轮子的修修补补
在卡特彼勒待了两年后,Luke开始单飞,找人合伙创建了Reductive Consulting(2010年改名为Puppetlabs),头衔是独立顾问,专门从事Unix基础设施自动化相关的咨询。他着手研究当前开源的系统管理和监控工具如CFEngine,ISconf,Nagios等等,并且通过二次开发把这些工具联结成一套满足客户需求的解决方案。这是一个重要的阶段,Luke开始将积累多年的经验和思考转变为对工具的改写,这期间他的主要工作包括重写了CFEngine的解析器和开发了ISConf3,这对后来的Puppet开发工作产生了重要影响。 CFEngine简介
首先,来说一下大名鼎鼎的CFEngine,这是一款出生于1993年的老牌系统配置管理工具,CFEngine的作者Mark Burgess希望可以使简单的管理任务自动化,使困难的任务变得较容易。它的核心理念是使系统从任何状态都能收敛到一种理想状态。
这样的工具对当时还在使用零零散散的脚本来管理机器的系统管理员来说简直就是冬天的棉袄,夏天的雪糕,黑暗中的灯泡,饥饿中的面包。之后,CFEngine自然而然地成为了系统配置管理工具中的标杆。
CFEngine有两种工作模式:既可以使用standalone模式即通过cfagent来完成单台服务器的配置管理工作,也可以通过C/S架构(cfservd和cfagent)来管理整个集群的配置管理的分发工作。
CFEngine的工作方式是基于脚本分发:在配置文件中有一个参数称为shellcommands,用于配置要执行的命令或脚本,actionsequence则用于设置shellcommands的执行顺序。
再来看看CFEngine的版本更新:1993年,CFEngine1发布;1998年,CFEngine2发布,而十年后,直到2008年,CFEngine3姗姗来迟,第三版发生了巨大改变,可以通过使用DSL来定义系统状态,以至于其不能再兼容旧版本CFEngine2的配置语言。本文谈到CFEnigne时,是指CFEngine2。 ISconf简介
ISconf则是另外一款配置管理工具,它的核心理念是系统的最终状态是一致的,即使被管理的机器是关机状态,当它们完成启动之后,相关命令就会被执行,到达一致的状态。同时整个系统无需中心节点,命令可以在任何一台节点上执行并复制到所有节点上。ISconf总共经历了4代的演化。ISconf1和2是由shell脚本编写,Luke在2002年的时候开发和设计了ISconf3,并使用Perl在2的基础上进行了重写。ISconf3有三个核心特性: