1、 关键字:
1)公用:
before:当前资源必须在before属性指定的资源运行之前先运行;
require:当前资源必须在require属性指定的资源运行之后再运行;
notify:当前资源必须在notify属性指定的资源运行之前先运行,而且,一旦此资源发生了改变,会通知nofity属性所引用的资源;
subscribe:当前资源必须在subscribe属性指定的资源运行之后再运行,而且,一旦subscribe指定的资源发生了改变,会通知当前资源;
2)package:
ensure: present, absent, latest, installed或版本号;
name: 程序包名,NameVar;
source:程序包来源;
provider: 指定要使用包管理器;
3)service:
ensure:running, true; stopped, false;
enable: 是否开机自动启动;
hasrestart: 告诉puppet服务脚本是否运行使用“restart”参数;
hasstatus:告诉puppet服务脚本是否运行使用“status”参数;
name: 脚本名称;
path: 脚本查找路径
pattern: 指明搜索服务相关的进程的模式;用于当脚本不支持使用restart/status参数时帮助判定 服务是否运行;
restart:手动指定用于服务“重启”的命令;
start、stop、status:
2、selector选择器:
selector指定一个默认值(default),这是在没有其它选项匹配的时候才会使用。
可以在selectors和case语句中使用正则表达式。
格式:
$变量= 给定值 ?{
值1 => "字符串",
…
值n => "字符串",
default => "字符串",
}
详解:如果给定值和值1,匹配,则将值1的字符串赋值给$变量,以此类推,如果给定值没有匹配到值n,则将default的值,赋值给$变量。
相当于,给定值和值1,是中间人,$变量和字符串,才是结果。
3、if语句:
3.1如果值为数字【验证失败】,0是false;其余为真。
3.2如果值为字符串,【验证过了,成立】,空串('')为false;其余为真。
4、stage:用以来定义各个class的前后关系的一种方式;默认只有一个main阶段,不指定的class都放在main阶段,当然可以使用stage进行定义其他阶段。
stage { 'first': before => Stage['main'], } stage { 'last': } Stage['main'] -> Stage['last']
各种class的执行顺序:first->main->last
分配class至stage:
class { 'apt-keys': stage => first, }
现在puppetbase的stage顺序是:pre-setup->setup->main->setup_app->deploy_ap
5、变量是有作用域的,一个变量的作用域受限于类、模块等 而且引用一个变量,如果不是在当前作用域的变量的话,要引用必须使用它的FQN,而且引用时必须用双冒号隔开,如下所示:
FQN表示:$::abc
引用一个类则是:class {'::gpostd' : } #在正常定义类名前面添加双引号::