Puppet实战
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

子曰:“工欲善其事,必先利其器。”作为系统管理员,最应该具备的一种技能就是利用各种优秀开源软件快速完成自己的工作,让自己变得更轻松。但并不是所有的软件都适合你,你需要根据自己的环境及需求进行选择。

Puppet就是系统管理员的一把利器。几年前我开始学习Puppet的时候,不少朋友都问我:为什么选择Puppet?它有什么优势?当时pssh、CFEngine等都已经很成熟,并且也能帮助系统管理员有效地解决繁重的工作。为什么还要选择Puppet?“需求决定产品”。Luke Kanies(Puppet作者,以下简称Luke)曾经全面参与了重写CFEngine的解析器和开发ISConf3的工作,但是他还是觉得现有的工具已经无法满足他的工作需求,需要自己创造一个全新的工具,才能彻底使他的工作更加高效、便捷。这便是Puppet诞生的背景和原因。

Puppet注重设计简洁、先框架后应用两个中心思想。这也造就了Puppet今日的成功,它的“三板斧”——资源、类、模板,可以轻松地帮我们完成复杂的业务逻辑关系管理。同时,Puppet并不具备执行功能,因此在某些程度上存在短板,(比如exec是为解决特定系统管理员蹩脚的执行命令需求而开发的,但Luke一再强调不建议使用。)

或许更多的系统管理员抱怨Puppet没有命令执行功能。Luke早就考虑到了这一点,并提前收购了MCollective,采用消息型总线的中间件来实现命令执行、系统管理、Puppet客户端管理等,以弥补了Puppet在这方面的不足,可见Puppetlabs非常有远见。伴随着Puppet各子功能及扩展工具的遍地开花,Puppet的商业化及各种开源社区的支持,Puppet可谓是蒸蒸日上。

在新兴的同类工具中,我的另一个关注点是SaltStack,它天生具备命令执行和配置管理两大核心功能,相比Puppet来说有一定优势,但SaltStack的成长还需要我们耐心等待。Puppet打败1993年“出生”的老牌系统配置管理工具CFEngine就花费了近7年时间。而Puppet与Salt Stack真正鹿死谁手,我们拭目以待。相信以后的市场竞争会越来越激烈。

为了让更多的系统管理员了解并深入学习Puppet,可以利用Puppet的集成方案解决系统管理复杂而繁重的任务,而不是盲目地寻找问题,我觉得有必要结合自己在学习Puppet过程中走过的弯路将工作中的经验和总结以实战形式呈现给大家。我也希望更多的人能加入开源社区,拥抱开源,拥抱变化,通过学习Puppet,体会到与开源爱好者交流的乐趣,而不是为了工具选型而犹豫甚至争斗。这也是我写作本书的初衷。

本书技术深入而阅读简单,涉及系统管理员所需的很多方面的基础知识,同时通过穿插各种实例及代码详解以便使读者能够快速掌握Puppet,并迅速将其运用到工作环境当中。通过这样一本以系统管理员为核心的书,希望能给读者带来的不只是技术能力提升,更多的是开源与奉献精神。也希望更多的系统管理员通过多阅读、多交流,建立起享受分享的技术氛围。

读者对象

根据本书内容定位,适合阅读本书的读者有:

□Puppet用户和爱好者

□UNIX与Linux系统管理员

□运维工程师

如何阅读本书

本书分为四大部分:

第一部分为准备篇(第1~4章),简单地介绍了Puppet的发展历程和相关理论,帮助读者了解一些基础背景知识,并快速搭建测试环境。

第二部分为基础篇(第5~10章),着重讲解Puppet的基础理论知识,包括语法、资源、类、模板、模块、节点、Facter、数组、函数、变量。结合不同实例让读者感觉理论知识不再那么枯燥。

第三部分为实战篇(第11~13章),从实战角度进行讲解,结合流行监控系统Nagios和Zabbix,包括最为热门的云计算OpenStack的部署,使读者能快速掌握Puppet并运用到实践中。

第四部分为进阶篇(第14~20章),通过对Puppet扩展模式、版本控制、报告系统、控制台、扩展工具及MCollective的综合讲解,让读者了解一个完整的Puppet生产流程。

其中第三部分以实战来讲解Puppet应用,相比于前两部分更加复杂。如果你是一名经验丰富的资深用户,能够理解Puppet的相关基础知识和工作原理,那么你可以直接阅读这部分内容。但是如果你是一名初学者,请一定从第1章的基础理论知识开始学习。

勘误和支持

由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我特意在博客(http://liuyu.github.io)的基础上开辟了在线支持与应急方案的站点http://puppet.bubbyroom.com。你可以将书中的错误以及遇到的有关Puppet的任何问题,通过访问该站点的Q&A页面提交给我。书中的全部源文件除可以从华章网站参见华章网站www.hzbook.com.——编辑注下载外,还可以从这个站点下载。同时我也会将相应的功能更新在这个站点上及时发布出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱liuyu105#gmail.com(sed's/#/@/g'),标题请注明《Puppet实战》,期待能够得到你们的真挚反馈。同样你也可以关注我为本书建立的微信公共平台(puppetchina),我会在此公共平台定期发布Puppet相关信息。

致谢

首先要感谢伟大的Puppet作者Luke Kanies,他开发了一款影响我整个人生的软件。

特别感谢刘长元、王广胜、吴问志、刘继伟、王哲,感谢你们对本书提出的宝贵修改意见。

感谢为本书撰写的童剑先生、窦哲先生、田逸先生、程辉先生,感谢你们在繁忙的工作中抽出时间,阅读了本书的样稿并写下推荐和评论。

感谢机械工业出版社华章公司的编辑杨福川,是你的引导才促使我完成这本书。特别感谢姜影编辑,在这一年多的时间中始终帮我校对并支持我的写作,你的鼓励和帮助引导我顺利完成全部书稿。

最后感谢我的笨笨,一如既往地支持我写作,给予我无尽的支持与灵感,并时时刻刻为我灌输着信心和力量!

谨以此书献给我即将出生的Baby,以及众多热爱Puppet的朋友们!

刘宇(守住每一天)

于中国北京