1  概述


puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。

puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置客户端. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息。

license授权,官网:https://puppet.com/products/open-source-projects,官方安装,可以通过配置yum仓库安装,另外服务包在epel源里有,可以直接通过yum安装,命令:yum install puppet

本文将介绍puppet的相关概念和命令使用


2  相关概念



puppet的工作模型:

工作模型有两种:

单机模型(standalone):手动应用清单;

master/agent:由agent周期性地向Master请求清单并自动应用于本地;server端要安装server和agent包; 

程序环境:

配置文件:/etc/puppet/puppet.conf 

主程序:/usr/bin/puppet 

puppet主程序将所有的程序集成在一个主程序里,用子命令来实现相关功能的调用,和之前的linux哲学思想不一样,linux哲学思想是每一个程序文件只实现一个功能

资源抽象的纬度:

即RAL如何抽象资源:

RAL由“类型”和提供者(provider)共同实现;其中

    类型:具有类似属性的组件,例如package、service、file;

    将资源的属性或状态与其实现方式分离;

    仅描述资源的目标状态,也即期望其实现的结果状态,而不是具体过程; 

资源定义:

向资源类型的属性赋值来实现,可称为资源类型实例化;

定义了资源实例的文件即清单,manifest;

manifests:分为:resource(资源清单) 和 node(站点清单)

定义资源的语法:键值对,attribute1为可用参数,title就是资源的名字,同一类型的资源名字不能相同,这个是必须要定义的参数的值

type {'title':

attribute1         => value1,

atrribute2        => value2,

……

}

其中资源属性(attribute)中的三个特殊属性:

Namevar: 可简称为name;,名称变量(namevar),name可省略,此时将由title表示;

ensure:定义资源的目标状态;

Provider:指明资源的管理接口,默认可不指定,会根据系统自动选择

资源引用:

Type['title']:引用类型的首字母必须大写;如Package['redis'],字母P大写

元参数:

metaparameters,有如下两种

    依赖关系:before  和  require,定义先后关系,当某个条件执行后,才会执行接下去的资源;

    通知关系:notify 和 subscribe,通知相关的其它资源进行“刷新”操作;


3  相关命令

puppet程序:格式

Usage: puppet <subcommand> [options] <action> [options]

相关subcommand介绍如下:

help         显示 Puppet 帮助.

apply             应用本地的puppet清单

describe       显示有关资源类型的帮助

agent           puppet agent守护进程

master          puppet master守护进程

module        在Puppet Forge上创建,安装和搜索模块

puppet help

puppet help <subcommand> :查看特定子命令的帮助.

puppet help <subcommand> <action>: 查看特定子命令action的帮助.

puppet apply

puppet apply:将独立Puppet资源清单应用于本地系统。standalone模式下,资源清单在本地

格式如下:

puppet apply  [-d|--debug] [-v|--verbose] [-e|--execute] [--noop] <file>

puppet describe

puppet describe:打印有关Puppet资源类型,提供者和元参数的帮助。

格式如下

puppet describe [-h|--help] [-s|--short] [-p|--providers] [-l|--list] [-m|--meta] [type]

-l:列出所有资源类型;

-s:显示指定类型的简要帮助信息;

-m:显示指定类型的元参数,一般与-s一同使用;