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博客,转载请务必保留此出处。