首页 > 学院 > 操作系统 > 正文

puppet 配置 4 条件语法

2024-06-28 16:01:45
字体:
来源:转载
供稿:网友

作用

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, false3. 判断函数返回结果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, false3. 判断函数返回结果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,}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表