标签:puppet
Puppet是开源的基于Ruby的系统配置管理工具,依赖于C/S的部署架构。主要开发者是Luke Kanies,遵循GPLv2版权协议。从1997年开始Kanies参与UNIX的系统管理工作,Puppet的开发源于这些经验。因为对已有的配置工具不甚满意,从2001年到2005年间,Kanies开始在Reductive实验室从事工具的开发。很快,Reductive实验室发布了他们的旗舰产品——Puppet。它使用简单且功能强大,正得到了越来越多地关注,现在很多大型IT公司均在使用puppet对集群中的软件进行管理和部署
一. Puppet的介绍
1. Puppet的用途
Puppet可以用来管理UNIX(包括OSX)和Linux平台,并且最近又添加了针对Microsoft Windows的支持。Puppet通常可以用来管理一台主机的整个生命周期:从初始化到安装、升级、维护以及最后将服务迁移并下架。Puppet被设计为能够持续与主机进行交互,而不是仅仅提供一个只负责搭建主机却并不管理它们的工具。 官方的定义是这样的:Puppet是一个开源的新一代的集中化配置管理工具,它由自己所声明的语言表达系统配置,通过客户端与服务端之间的连接,维护着关系库。Puppet的设计目标是让Puppet成为一个由富有表现力的语言支撑的足够强大的库。这样只需要编写短短的几行代码的自动化应用程序即可实现设计目标。同时Puppet是开放的,允许添加任何新的功能。 通常这样定义:Puppet是一个跨平台的集中化配置管理系统,它使用自有的描述语言,可管理配置文件、用户、Cron、软件包,系统服务等,Puppet把这些统称为“资源”。Puppet的设计目标就是简化对这些资源的管理以及妥善处理资源之间的依赖关系。
2. Pupput的特性
许多系统配置管理工具工作的方式非常类似,如cfengine。是什么让Puppet与众不同?Puppet的语法允许你创建一个单独脚本,用来在你所有的目标主机上建立一个用户。所有的目标主机会依次使用适用于本地系统的语法解释和执行这个模块。举例:如果这个配置是在Red Hat服务器上执行,建立用户使用useradd命令;如果这个配置是在FreeBSD主机上执行,使用的是adduser命令。Puppet另一个卓越的地方是它的灵活性。源于开源软件的天性,你可以自由的获得Puppet的源码,如果你遇到问题并且有能力的话,你可以修改或者加强Puppet的代码去适用于你的环境。另外,社区开发者和捐献者还在不断增强Puppet的功能。一个大的开发者和用户社区也致力于提供Puppet的文档和技术支持。
Puppet也是易于扩展的。定制软件包的支持功能和特殊的系统环境配置能够快速简单的添加进Puppet的安装程序中。
3. Puppet的工作模式
Puppet是一个C/S架构的配置管理工具,在中央服务器上安装puppet-server软件包(被称作Puppet master)。在需要管理的目标主机上安装puppet客户端软件(被称作Puppet Client)。
当客户端连接上Puppet master后,定义在Puppet master上的配置文件会被编译,然后在客户端上运行。每个客户端默认每半个小时和服务器进行一次通信,确认配置信息的更新情况。如果有新的配置信息或者配置信息已经改变,配置将会被重新编译并发布到各客户端执行。也可以在服务器上主动触发一个配置信息的更新,强制各客户端进行配置。如果客户端的配置信息被改变了,它可以从服务器获得原始配置进行校正。
Puppet拥有一个简单并且容易理解和实施的操作模型。这个模型由三部分组成:1.部署; 2.配置语言资源抽象层; 3.事务层,如下图所示:
1.1.1 部署
Puppet通常使用简单的客户端-服务端模型进行部署。服务端被称为"Puppet master",客户端软件被称为agent,主机本身则被定义为一个节点。如下图:
Puppet master在一台主机上以守护进程的方式运行,它包含了环境所需的所有配置。Puppet agent则通过一个使用标准SSL协议进行加密和验证的连接与Puppet master进行通信,然后接收或者"拉取"需要被应用的配置。很重要的一点是,Puppet agent在已经获得了需要的配置或者没有任何可以被应用的配置时不会做任何事情。这意味着Puppet只会在需要时对你的环境作出变更。这整个过程被称为一次配置运行。
每一个客户端既可以通过守护进程的方式来运行Puppet(比如使用cron),也可以手动启动。通常的做法是以守护进程的方式运行Puppet,并周期性地与master进行通信,以此来保证配置已经更新到最新并且能及时接收新的配置。不过,也有很多人觉得使用cron或者手动运行Puppet更符合他们的需求。
在默认情况下,Puppet agent会每30分钟与master进行一次通信,检查新添加的或者已改变的配置。你可以自行设定这个周期来适应你的环境。当然也存在其他部署模型。比如,Puppet也能抛开Puppet master以独立方式运行。在这种模式下,配置放置在被管理的主机上,然后通过手动运行puppet程序来执行和应用这些配置。我们将在稍后讨论这种模式。
本文出自 “菜鸟的成长记” 博客,请务必保留此出处http://blief.blog.51cto.com/6170059/1757939
标签:puppet
原文地址:http://blief.blog.51cto.com/6170059/1757939