
puppet是一个IT基础设施自动化管理工具,它能够帮助系统管理员管理基础设施的整个生命周期:
供应(provisioning)、配置(configuration)、联动(orcherstraion)及报告(reporting)
基于puppet,可实现自动化重复任务、快速部署关键性应用以及在本地或云端完成主动管理变更
puppet主要使用的场景:
  | 
  | 
puppet的三层模型:
  | 
  | 
puppet运行时的两种模型:
  | 
  | 
puppet的”资源”
资源抽象的纬度:
- 类型:具有类似属性的组件,例如package,service,file
 - 将资源的属性或状态与其实现方式分离
 - 仅描述资源的目标状态,也即期望其实现的结果状态,而不是具体过程
 
查看资源类型
puppet descrbe命令:查看资源类型
  | 
  | 
资源定义
向资源类型的属性复制来实现,可称为资源类型实例化
定义了资源实例的文件即清单,manifest
一个清单,可以定义多个资源;资源清单支持幂等性,但是资源内的执行的内容可能不是幂等性,需要手动写入规则
- 定义资源的语法
 
  | 
  | 
注意:type必须使用小写字符;title是一个字符串,在同一类型中必须唯一
资源类型中的特殊属性
  | 
  | 
资源类型
查看指定类型的帮助:$ puppet describe TYPE
- group:管理组类型
 
  | 
  | 
- user:管理用户
 
  | 
  | 
- package:定义包管理属性
 
  | 
  | 
示例:安装jdk
  | 
  | 
- service:服务相关的配置
 
  | 
  | 
示例:定义redis服务
  | 
  | 
- file:文件相关配置
 
  | 
  | 
示例:
  | 
  | 
- exec:执行外部命令
 
  | 
  | 
示例:
  | 
  | 
- cron:计划任务
 
  | 
  | 
示例:
  | 
  | 
- notify:发送通知
 
  | 
  | 
元参数
- 依赖关系 before/require
 
  | 
  | 
- 通知关系 notify/subscribe
 
  | 
  | 
- 通知元参数
 
A notify B:B依赖于A,接受由A触发refresh;
B subscribe A:B依赖于A,接受由A触发refresh;
示例:
  | 
  | 
puppet变量
定义变量:$variable_name = value
puppet的变量名称必须以”$”符号开头(‘无论赋值还是调用’),赋值操作符为”=”号
数据类型
  | 
  | 
正则表达式
  | 
  | 
OPTIONS:
  | 
  | 
puppet内建变量
打印当前系统所有的变量$ facter -p
- 内建变量分类:
 
  | 
  | 
变量作用域 Scope
  | 
  | 
puppet流程控制语句
if语句
语法格式:
  | 
  | 
CONDITION的给定方式:
(1) 变量
(2) 比较表达式
(3) 有返回值的函数
  | 
  | 
case语句
语法格式:
  | 
  | 
CONTROL_EXPRESSION:
(1) 变量
(2) 表达式
(3) 有返回值的函数
各case的给定方式
(1) 直接字串;
(2) 变量
(3) 有返回值的函数
(4) 正则表达式模式;
(5) default示例
  | 
  | 
selector语句
语法:
  | 
  | 
- CONTROL_VARIABLE的给定方法:
 
  | 
  | 
- 各case的给定方式
 
  | 
  | 
注意:不能使用列表格式;但可以是其它的selector
- 示例
 
  | 
  | 
本文出自Maxie’s Notes博客,转载请务必保留此出处。

