作用
puppet 与其他语言一样, 可以通过正则匹配, 通过判断, 循环, case 等语法进行管理
本文会对 puppet 一些条件语法进行介绍
比较
在 puppet 中, 有下面几种常见的比较方法, 参考下面表格
表达式 | 作用 | 例子 |
---|---|---|
! | 非 | if ( ! $myvar ) |
and | 与 | if ( $myvar > 10 and $osfamily == ‘RedHat’ ) |
or | 或 | if ( $myvar > 10 or $osfamily == ‘RedHat’ ) |
in | 包含 | if ( $var in $array ) |
* 与 / | 数学运算 | 3 * 4 / 2 |
- 与 + | 数学运算 | 4 + 3 - 5 |
<< 与 >> | 左右位移 | NULL |
== 与 != | 相等不等比较 | if ( $osfamily == ‘RedHat’ ) |
>= <= > < | 大小比较 | if ( $myvar > 10 ) |
=~ | 正则匹配 | if ( $::operatingsystemrelease =~ /^5/ ) |
判断
puppet 支持“if””unless””case” “selectors” 等语法
if
参考 if 判断语法
1. 直接判断变量,
2. 判断 true, false
3. 判断函数返回结果
4. 可以结合 and, or 使用
5. 配合正则使用
范例
if $is_virtual == 'true' {
warning('Tried to include class ntp on virtual machine; this node may be misclassified.')
}
elsif $operatingsystem == 'Darwin' {
warning('This NTP module does not yet work on our Mac laptops.')
}
else {
include ntp
}
参考正则判断语法
if $hostname =~ /^www(\d+)\./ {
notice("Welcome to web server number $1")
}
unless
参考 unless 语法
1. 直接判断变量,
2. 判断 true, false
3. 判断函数返回结果
4. 不支持 and, or 使用
5. 可以配合正则使用
6. unless 与 if 语法类似, 但没有 else, elsif 等多重判断
7. 只有当判断为 false 时候才会执行进行代码块中内容
8. 不匹配任何条件, 则执行 default 部分代码
范例:
unless $memorysize > 1024 {
$maxclient = 500
}
case
参考 case 语法
case $operatingsystem {
'Solaris': { include role::solaris }
'RedHat', 'CentOS': { include role::redhat }
/^(Debian|Ubuntu)$/:{ include role::debian }
default: { include role::generic }
}
selector
参考 selector 语法
1. 类似 case 语法, 但只会返回结果, 而没有代码直接执行功能
2. selector 执行后的结果是返回值
3. 返回值可以用于作为变量赋值
4. 返回值可以作为资源属性
5. 返回值可以作为函数参数
6. 返回值可以用于资源 titile
范例:
$rootgroup = $osfamily ? {
'Solaris' => 'wheel',
/(Darwin|FreeBSD)/ => 'wheel',
default => 'root',
}
file { '/etc/passwd':
ensure => file,
owner => 'root',
group => $rootgroup,
}
时间: 2024-09-24 21:00:24