点评:Puppet Enterprise 3.0更多的是牵线木偶

Puppet实验室的配置自动化工具3.0版的速度提升,编排改进,以及对Windows服务器的更深入的支持

Puppet实验室的配置自动化工具3.0版的速度提升,编排改进,以及对Windows服务器的更深入的支持

由于虚拟化推动了服务器实例数量的快速增长,难怪如此多的配置自动化工具正在大步前进。以前我们要么不进行配置管理,要么创建自己的自定义脚本,现在我们有许多选项来管理对大量服务器的更改。

最好的选择之一是Puppet Enterprise, Puppet开放源码项目的商业版本。刚刚到来的3.0版本继承了社区版本的许多进步,以及只有在企业版本中才能找到的新特性。

Puppet还是Chef:配置管理的困境|为开发人员和运维人员提供的12个智能云工具|订阅InfoWorld雷竞技电脑网站数据中心通讯保持对最新发展的了解。]

如果你已经很精通Puppet,那么这个版本将带来受欢迎的变化。首先是速度。尽管我不能完全证实Puppet Labs所宣称的60%的目录核心编译速度,2.7倍的代理运行时速度,或宣称的“200%性能提升”,但现实确实很接近。对于长期使用大规模部署的Puppet用户来说,速度的提高是非常重要的,因为这将减少Puppet服务器(即master)和托管节点上的负载,以及全面进行更改所需的时间。

Puppet Enterprise 3.0还引入了一个新的编排引擎,允许更细粒度、更稳定的大规模更改。与早期版本相比,新的编制特性包括更细粒度的筛选,以选择要修改或直接控制的系统子集,以及批处理功能,以允许逐步推出更改,而不是一次执行所有更改。

另一个主要变化是对Windows服务器的更深层次的支持。以前,许多操作(如Live Management)无法在Windows上工作。新版本引入了Live Management(一种用于实时管理节点的Web UI)和Windows服务器的编排。

Puppet Enterprise支持广泛的平台,提供Red Hat、Ubuntu、Debian、Solaris和AIX包,以及通用的Unix tarball。此外,开源社区还发布了用于各种其他操作系统的代码。Puppet Labs不支持这些包,但它们为其他Linux发行版、各种BSD版本和Mac OS X提供了一些功能。

在木偶Puppet绝对是一个以Linux/Unix为中心的应用程序。尽管在新版本中有更多的Windows支持,但这个工具是由Linux/Unix管理员设计的。任何超过少量服务器的Puppet部署都需要定制代码和对Linux/Unix内部相当深入的了解。这不是一个点击-拖动工具,也不是一个基于Web的配置管理工具,而是一个基于配置文件的工具,具有Web UI,用于监视和组织任务——它应该是这样的。

使用Puppet需要学习Puppet的配置语言,了解Puppet的类和模块,这些类和模块被组织在/etc/puppetlabs/ Puppet下的特定层次的配置文件中无需详细讨论,您可以考虑将所有模块包含在一个大脚本中,定义类并链接到特定的服务器节点或节点组。这提供了一种非常简单的方法,可以处理管理多个服务器平台和发行版的复杂和详细需求,更不用说切换和存储应用程序了。

Puppet Enterprise包含的Web UI配置良好且简单,允许创建和管理节点、组和类,以及生成和查看报告。它是操作节点组织和快速确定框架某些部分问题的有用工具。它还提供有限的节点或节点组的Live管理。然而,对于许多实现来说,将UI视为只读的并主要通过命令行工作可能更容易。对Puppet了解得越深,就越有可能出现这种情况,因为您可能会发现,只能通过CLI将某些配置和模块应用到节点和组,而这些更改可能无法在Web UI中反映出来。

例如,通过Puppet Forge模块共享站点下载的一个模块由于其配置的性质而不能使用类。在这种情况下,您需要从Puppet配置文件中将模块应用到节点或组,因为您无法定义一个映射到Web UI中的类定义的类。因此,这个配置元素将不会出现在Web UI中。

我还在Web UI中遇到了一些错误,比如可以添加名称中包含句点的组,但此后不能通过UI编辑或删除该组。这似乎是一个输入验证错误,因为在组名中句点似乎是一个非法字符。

站起来的木偶安装Puppet在概念上非常简单。为您的Puppet Master服务器选择一个受支持的平台,并运行安装脚本。这将提示需要安装各种包和选项:Puppet Master、PostgreSQL、Cloud provider等等。安装脚本还会提示输入Web UI中第一个管理员的用户名和密码。

它非常简单,但在错误检查和错误报告方面有些欠缺。例如,如果您在Linux系统上安装PostgreSQL已经安装但不配置或运行,安装程序将会很乐意自己安装PostgreSQL二进制文件,然后尝试使用错误的客户端连接,它将失败,并产生一个相当无用的错误消息说PostgreSQL服务器失败的开始,尽管服务器明显在运行。幸运的是,经过一些挖掘,这个根本原因被发现并修复了,但这并不是安装程序在没有任何有用日志记录或明显原因的情况下退出的唯一一次。安装脚本是简单的bash脚本,所以调试不是什么大问题。

Puppet Enterprise的主控制台显示节点列表和所有节点的集体运行状态。

撇开这些缺点和缺陷不提,初始配置非常简单,需要所有节点的DNS和(显然)清晰的网络连接。安装Puppet Master之后,每个节点的配置方式基本上是相同的,即为该节点的平台运行安装程序,生成证书并联系主服务器进行批准。当节点被批准后,它就可以通过Puppet进行配置,并可以通过Web UI或CLI将其添加到组或绑定到类。

接下来是比较困难的部分:配置Puppet以对这些系统进行更改。这是通过模块完成的,定制代码或从Puppet Forge网站下载并定制。

木偶在行动作为Puppet如何工作的一个非常简单的示例,让我们看看如何使用Puppet来确保正确配置NTP(网络时间协议)服务并在选定的节点上运行。

假设我们已经批准了节点,我们需要下载一个模块,例如由Keith Burdis编写的第三方erwbgy-ntp模块。我们通过从命令行安装模块来实现:

Puppet模块安装erwbgy-ntp

这将下载模块并将其放在/etc/puppetlabs/puppet/modules/ntp下然后我们看一下文件/etc/puppetlabs/puppet/modules/ntp/manifest /init.pp。它包含模块的许多配置选项。对于这个例子,我们只需要修改我们想要使用的NTP服务器,所以我们修改$servers变量:

$servers = ['192.168.32.10', '192.168.16.10'],

这将导致模块将这两个服务器添加到ntp.conf文件中。init。Pp文件包括服务。Pp文件,其内容如下:

国家结核控制规划类::服务{

,服务{“ntpd”:

,,ensure ,,,=比;运行时,

,,hasstatus =比;真的,

,,hasrestart =比;真的,

,,enable ,,,=比;真的,

,,require ,,=比;类(“国家结核控制规划:配置”),

,}

它定义了一个子类来处理ntpd服务本身。这些变量控制Puppet是否确保服务正在运行和启用。

另一个包含的文件叫做install。Pp处理软件包安装:

类国家结核控制规划:安装{

,操作系统案例:美元:{

,,'RedHat', 'CentOS', 'OracleLinux': {

,,,,如果!定义(包(“国家结核控制规划”)){

,,,,,,包{国家结核控制规划的:,确保=比;安装}

,,,,}

,,,,If versioncmp($::operatingsystemrelease, '6.0') >0 {

,,,,,,如果!(包中定义[' ntpdate ']) {

,,,,,,,,包{“ntpdate”:,确保=比;安装}

,,,,,,}

,,,,}

,,}

,,默认值:{

,,,,失败(“目前只能在类似redhat的系统上运行”)

,,}

,}

这段代码检查以确保它运行在一个兼容的发行版(Red Hat、CentOS或Oracle Linux)上,如果是,将导致安装ntp包。如果需要,它还将检查以确保安装了ntpdate。否则,将抛出一个错误。

综上所述,当应用到目标节点时,该模块将安装尚未安装的ntp包,并将向配置文件中添加行,以将ntp服务器定义为192.168.32.10和192.168.16.10,如果ntpd服务尚未运行,则将启动它。

特定Ubuntu服务器的详细页面列出了它所属的组和类,并包括代理运行时和过去30天的状态图。

要将此模块应用到节点,我们需要在Web UI中定义一个名为ntp的新类,编辑节点组或节点本身,并将该类添加到组或节点中。这将导致Puppet通过安装在该节点上的Puppet代理将该配置应用到该节点。

默认情况下,代理每30分钟向Puppet Master签入一次,当然这是一个可配置参数。还可以通过Web UI中的Live Management选项卡强制节点更新。Live Management允许管理员启用、禁用、运行和监控节点或节点组上的Puppet代理。我们可以选择要刷新的节点,然后强制刷新。如果我们选择了配置ntp模块的节点,它将与服务器签入,下载模块信息,安装ntp包,修改配置文件,并启动服务。

如果某个节点与主节点签入,并发现配置已被手动更改,或服务已停止或卸载,代理将再次应用更改并启动服务备份。

这是一个非常简单的例子,说明Puppet可以做什么。Puppet Labs和贡献者提供了数百个模块,可以用于管理Linux和Windows系统上各种各样的配置元素,跨越各种发行版和版本。

如果我们要对Windows服务器做同样的事情,我们可以使用Adam Denning的adenning/winntp模块。这在Puppet Master上的配置类似:

类winntp (

,special_poll_interval 美元;,,= 900, 15分钟

,ntp_server 美元;,,,,,,,,,,,,,= 192.168.32.10 192.168.16.10’,

,$max_pos_phase_correction = 54000, # 15 hours

,$max_neg_phase_correction = 54000, # 15 hours {

,包括“注册表”

,服务{“w32time”:

,,确保=比;“奔跑”,

,}

...

当应用到Windows主机时,该模块将修改所需的注册表值,以配置Windows时间服务以使用我们的NTP服务器,并确保服务已启动。

可以构造模块来执行各种任务,而不仅仅是安装包和修改文件。您还可以将整个文件放在特定的目录中,并使用基于ruby的ERB语言构造模板。

12 第1页
第1页共2页
工资调查:结果在