站点图标 Linux-技术共享

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

product_web_PE_patches-1

什么是 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?

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

谁发明了Puppet?

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

Puppet是为哪一类人发明的?

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

在什么场合不宜使用Puppet?

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

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

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

使用 Puppet Enterprise 标准化和自动化修补工作流程
修补系统不是一个新问题。这是组织非常熟悉的事情。组织已经尝试通过将多个工具、流程、不同团队等组合在一起,以各种方式解决这个问题。

组织一直在努力保持安全并使其系统保持最新状态,但补丁管理并不是一个简单的过程。事实上,应用补丁本身只是整个工作流程的一部分,它涉及多个团队和各个步骤。此流程通常提前几周计划好。

典型的修补工作流程是手动密集型且极其耗时的。它可能涉及:团队审查可用补丁、追踪受影响的系统、与系统所有者协调、就调度和中断窗口达成一致、创建必要的票证并获得变更批准、应用实际补丁(这可能涉及进入机器、安装补丁,确保一切正常,重新启动等),然后通知团队补丁成功或失败,最后确认工作已完成并且系统恢复到健康状态。

我们知道这是我们许多客户的主要痛点,因此我们提出了两种新方法来帮助团队标准化和自动化修补工作流程。

从 PE 控制台修补操作系统
随着 Puppet Enterprise 2019.8 的发布,Puppet 现在为修补系统提供了预构建的自动化内容,无论操作系统如何。查看 Windows 和 Linux 节点上的可用补丁,应用实际补丁,并报告补丁成功或失败,以确保您的系统恢复健康状态。

应用补丁
这种新的补丁功能最有价值的方面之一是可以查看您资产中的所有补丁,而不管操作系统如何。这允许您使用一种工具来应用补丁。您可以让您的团队访问他们负责的内容,以便他们可以按时进行管理。Patching 将 Tasks 用于工作流程,让您的组织可以轻松上手!

新的!修补服务
如果您希望改进修补流程但需要推迟更新到 PE 2019.8,我们可以满足您的需求。我们新的修补服务通过减少延迟和手动工作,帮助使修补更具可扩展性和效率。

Puppet 专家将与您的团队合作实施标准化工作流程并构建任务以通过 Puppet Enterprise 触发工作流程。RBAC 和预定义的调度/中断窗口支持其他团队的自助部署,消除了跨团队协调和手动变更批准流程的瓶颈。这种经过编码的自动化工作流程降低了与大规模修补相关的风险,并使定期可靠地更新系统变得更加容易。

当您准备好升级到 Puppet Enterprise 2019.8 以利用开箱即用的修补工作流和其他新功能时,我们的升级服务可以帮助确保顺利过渡。我们将帮助您转换或替换现有的 Puppet 代码,安装和配置最新版本,并迁移节点以针对您的新基础架构运行。

我希望这些更新有助于减轻打补丁的痛苦。我们渴望听到您的反馈!在Puppet Slack 频道中给我们留言,让我们知道您的想法。

退出移动版