Puppet 之 tag 和 变量介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Puppet 之 tag 和 变量介绍相关的知识,希望对你有一定的参考价值。
1 概述这里介绍tag 和 变量的相关用法
2 tag
为资源定义tag,tag表示标签,只执行某些资源,而不全部执行脚本中的所有资源,tag可以同时指定多个,用中括号括起来,用逗号分开,tag可以放在任何资源中
type{'title': ... tag => 'TAG1', }
type{'title': ... tag => ['TAG1','TAG2',...], }
手动调用:
puppet apply --tags TAG1,TAG2,... FILE.PP
例子
vim service.pp package{'redis': ensure => latest, } file{'redis.conf': path => '/etc/redis.conf', source => '/root/redis.conf', ensure => file, mode => '0644', owner => redis, group => root, notify => Service['redis'], tag => 'cpfile', } service{'redis': ensure => running, enable => true, hasrestart => true, restart => 'systemctl restart redis', # subscribe => File['redis.conf'], tag => "onlyrestart", } Package['redis'] -> File['redis.conf'] ~> Service['redis']
执行
puppet apply --tags onlyrestart service.pp puppet apply --tags cpfile service.pp
备注,这里要注意资源间的依赖关系,比如我们执行cpfile这个tag,当redis的配置模板发生了改变,则会引起Service['redis']这段资源也要执行。
3 变量
puppet variable:
$variable_name=value
数据类型:
字符型:引号可有可无;但单引号为强引用,双引号为弱引用;
数值型:默认均识别为字符串,仅在数值上下文才以数值对待;
数组:[]中以逗号分隔元素列表;
布尔型值:true, false;
hash:{}中以逗号分隔k/v数据列表; 键为字符型,值为任意puppet支持的类型;{ 'mon' => 'Monday', 'tue' => 'Tuesday', };
undef:未定义 ;表示为空
正则表达式:
(?<ENABLED OPTION>:<PATTERN>)
(?-<DISABLED OPTION>:<PATTERN>)
OPTIONS:
i:忽略字符大小写;
m:把.当换行符;
x:忽略<PATTERN>中的空白字符
(?i-mx:PATTERN),其中,减号是禁用的意思
不能赋值给变量 ,仅能用在接受=~或!~操作符的位置;
例子
通过变量安装tree服务包
$pkgname = 'tree' package{'installpkg': name => "$pkgname", ensure => latest, }
以上配置等价于如下的配置
$pkgname = 'tree' package{"$pkgname": ensure => latest, }
puppet的变量种类:
facts:系统信息检查,
由facter提供;factor安装puppet时会同时被安装,facter -p显示当前的内建变量
内建变量:
master端变量
$servername, $serverip, $serverversion
agent端变量
$clientcert, $clientversion, $environment
parser变量
$module_name
用户自定义变量:
变量有作用域,称为Scope;
top scope: $::var_name,全局作用域(根作用域),用双冒号隔开表示根开始
node scope:节点作用域
class scope:类作用域,类可以嵌套
例子如下
$::node::class1::class2::var_name
以上是关于Puppet 之 tag 和 变量介绍的主要内容,如果未能解决你的问题,请参考以下文章