什么是 Puppet? Puppet 是Unix/Linux系统管理员和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? cfengine是第一个出现的配置管理工具,但是没有占领市场。Puppet却做到了这一点。大多数公司使用Puppet。根据我的经验,Devops使用Puppet比较好,而系统管理员使用Ansible更方便。
谁发明了Puppet? Luke Kanies是一个系统管理员。他认为脚本是自动化系统管理的阻碍因素,所以开始了Puppet这个开源项目。
Puppet是为哪一类人发明的? 喜欢自动化管理的人, devops或系统管理员。
在什么场合不宜使用Puppet? 系统管理员只需要使用Puppet或Ansible就可以完成所有工作吗?答案是否定的。有一些工作仍然要求系统管理员手动完成。
系统管理员必须掌握Puppet/Ansible? 可以这么说。信息技术在不断发展,如果不更新自己的系统管理技能,你将落伍。
相关主题 |