Puppet
Puppet 是 Linux、Unix 和 Windows 系统的自动管理引擎,它使用自有的puppet描述语言根据集中式规范执行管理任务,例如进行配置文件、用户、cron任务、软件包、系统服务等。
在 Puppet 的星状 C/S 架构中,所有客户端与一个或多个服务器进行交互。每个客户端定期——默认每半小时——向服务器发送请求,获取最新的配置信息以确保与该信息同步。每个 Puppet 客户端根据设定的周期(默认为半小时)连接到服务器,下载最新的配置文件,并严格依据这些文件对客户端进行配置。配置完成后,客户端会向服务器发送确认消息。如果在配置过程中出现错误,客户端同样会向服务器反馈错误信息。
工作原理[ ]
Puppet 的设计宗旨是让用户专注于管理目标,而非深陷于具体实现的细节,如命令名称、参数或文件格式等。在 Puppet 的体系中,系统内的用户、软件包、服务等被抽象为“资源”,而 Puppet 的核心任务便是对这些资源及其相互关系进行管理。
为实现这一目的,Puppet 引入了底层支撑工具——Providers。由于不同的操作系统对资源的管理命令各不相同(例如,在 Debian 系统中使用 apt-get 安装软件,而在 RedHat 系统中则使用 yum),Puppet 允许同一资源拥有多个实现方式。当配置资源时,用户可以明确指定采用哪个 Provider。以软件包为例,在 RedHat 系统上配置 package 资源时,用户可以指定使用 yum 作为 Provider。
主要功能[ ]
修改系统配置[ ]
Puppet 通过管理资源的方式来管理系统。例如,它可以决定是否安装某个软件,是安装最新版本还是指定版本;它还可以管理某个服务是否开启,以及管理某个文件的属性和内容等等。所有的资源都有对应的几个属性可以设置,通过设置属性的方式来管理资源。有一种特殊的属性可以用在所有的资源上面,这种属性叫做 metaparams(元参数或元属性)。
支持资源之间的关系配置[ ]
一个资源的变更可以对另一个资源产生一个动作。例如,如果 /etc/apache.conf 这个资源发生了改动,可以让 /etc/init.d/apache 这个资源重新加载。假如一个资源依赖另一个资源,那么 Puppet 会优先配置被依赖的资源,因此如果你的配置文件没有准备好,对应的服务是不会先启动的。
避免重复配置[ ]
Puppet 的编译器会避免在不同的代码段里面管理同一个资源。如果在不同的代码段对同一个资源进行配置,执行 Puppet 的时候你会得到一个语法错误。Puppet 探测这种冲突的情况是通过判断资源类型和资源的 title(标题)。如果两个资源有相同的资源类型和 title,那么就认为这两个资源是表示同一个资源。
Facter变量[ ]
在puppet客户端分析代码的时候,会把从facter传送过来的对应的值赋值给变量, 你可以单独手工执行facter这个命令,这个命令会打印出它所收集到的关于主机的信息。例如ip地址等等, facter把收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件, 最重要的一个就是服务器的主机名。 相关条目