puppet 配置 4 条件语法

    xiaoxiao2026-03-27  8

    作用

    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, }
    最新回复(0)