Puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的Puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。
Puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,并且严格按照配置文件来配置客户端,保证和该配置信息同步。配置完成以后,Puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息。
由于Puppet的工作模式是agent节点到master节点“拉取同步信息”,它适用于有非常多的节点的大集群,对配置生效时间不敏感的场景。
puppet把这些系统实体称之为资源,Puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
Puppet的全部就是管理资源,因此Puppet语言的焦点就是处理这些资源,下面是一个基本的管理单个资源的例子.
file {"/etc/hosts": owner = root, group = root, mode = 644}
上面的例子给出了定义一个资源所需要的所有组件,类型,名字和属性。定义了一个 file 资源,资源的title(标题)是 "/etc/hosts", 资源的属性里面设置了该文件属于哪个用户和组,以及文件的权限。
也可以在一个大括号里面定义多个资源,通过分号来区分。
避免重复配置
Puppet的编译器会避免在不同的代码段里面管理同一个资源, 如果在不同的代码段对同一个资源进行配置,执行Puppet的时候你会得到一个语法错误.Puppet探测这种冲突的情况是通过判断资源类型和资源的title(标题),如果两个资源有相同的资源类型和title,那么就认为这两个资源是表示同一个资源。