Puppet 是什么?为什么Unix/Linux管理员需要Puppet?

什么是 Puppet?

Puppet 是系统管理员和Devops在构建和配置IT基础设施中使用的配置管理工具(Configuration Management Tool)。为了理解Puppet,我们首先需要知道信息技术是如何发展的。

早期的电脑和机器是独立存在的,硬件资源有限,运行分时操作系统。美国国防部先进研究项目局(DARPA)想要研发一种分布式的计算机网络,以避免与苏联(USSR)发生战争时出现单点故障(Single Point of Failure)问题。他们将不同地理位置的计算机互相连接通信,以减少单点故障,同时可以有效地使用打印机,扫描仪等其他系统资源。计算机网络就是这样产生的。今天的互联网发展离不开DARPA。互联网的下一个版本物联网(Internet of Things)开始于大约10年前。

物联网的发展路程

  1. 分散的计算机
  2. 计算机网络
  3. 互联网
  4. 物联网

物联网的工作就是让电子设备变得智能。比如智能水表可以检测出输水系统的溢水或漏水故障,并发出实时报告。

网络中计算机的命名也有相似的发展史。最初人们使用本地主机的hosts解析文件与其他计算机通信,至今这个文件仍然存在于Linux,Mac和Windows系统中。但随着计算机网络的不断扩大,分散式的hosts文件显得乏力低效,所以DNS这种集中式的计算机命名系统就诞生了。后来LDAP与AD也出现了。

LDAP/AD的发展路程

  1. 本地主机的hosts解析文件
  2. DNS
  3. LDAP/AD

我们可以总结出一个模式:在起始阶段总是依靠单个实体,但最终需要与其他实体合作。团队合作的力量总是要大于单枪匹马。

系统管理也不例外。随着系统的不断扩大,系统管理的任务量也不断上涨,传统分散式的系统存在很多缺陷,大多数系统管理任务如编辑配置文件、启动服务、甚至安装程序都是在各个计算机上分别完成。一些系统管理员使用Shell脚本、Python/Ruby/Go实现自动化管理。Python系统管理员应该都知道fabric库。

集中式系统管理的发展路程

  1. 开发者管理系统
  2. 专业的系统管理员(Sysadmin)出现
  3. 系统管理员写脚本使一些任务自动化
  4. 集中式系统管理(cfengine, Puppet, Ansible, chef, salt等)

为什么需要配置管理工具?

系统管理员的很多工作都是重复性的。基础设施的扩大使这些重复性工作花费大量时间。很多系统管理员开始用Shell, Perl, Python, Ruby, PHP脚本甚至Go语言来自动化这些重复性任务。但我们的基础设施并没有在100台机器时停止扩大。在云计算时代基础设施呈指数性增长,所以我们需要Puppet、Ansible这样的配置管理工具来远程集中管理多个服务器。集中管理的好处有:

  1. 节约时间
  2. 大规模消除重复性工作
  3. 可以在同类环境中工作

有了Puppet这样的工具,我们可以在几个小时内构建整个基础设施,而用传统的方法可能需要几个星期甚至几个月的时间。

puppet
puppet,中文意思是“木偶”

脚本的弊端

脚本语言可以自动化简单与中级难度的任务,但如果你要构建整个基础设施,你就要使用配置管理工具。这些工具有不同的模块,可以使它们与基础设施的不同部分沟通。

为什么需要Puppet?

cfengine是第一个出现的配置管理工具,但是没有占领市场。Puppet却做到了这一点。大多数公司使用Puppet。根据我的经验,Devops使用Puppet比较好,而系统管理员使用Ansible更方便。

谁发明了Puppet?

Luke Kanies是一个系统管理员。他认为脚本是自动化系统管理的阻碍因素,所以开始了Puppet这个开源项目。

Puppet是为哪一类人发明的?

喜欢自动化管理的人, devops或系统管理员。

在什么场合不宜使用Puppet?

系统管理员只需要使用Puppet或Ansible就可以完成所有工作吗?答案是否定的。有一些工作仍然要求系统管理员手动完成。

系统管理员必须掌握Puppet/Ansible?

可以这么说。信息技术在不断发展,如果不更新自己的系统管理技能,你将落伍。

为这篇文章评分
[Total: 3 Average: 3]

发表评论

电子邮件地址不会被公开。 必填项已用*标注