Puppet正規表現(十七)


puppetは標準的なruby正規表現をサポートする.
正規表現のパラメータ一致:
[]:範囲(例えば[a-z]、範囲a~zの間を表す.
():正規表現を含む.
w:アルファベットまたは数字を記述するために使用され、[0-9 a-zA-Z]に相当する
W:アルファベットまたは数字ではありません.
s:マッチ[trf]で、(t)がタブ、(r)がリターンバー、()が改行、(f)が改ページ、sがこれらの記号にマッチする略記を表す.
S:空でない文字に一致します.
d:[0-9]の数字に一致する.
D:非数値照合
b:チェックボックスを合わせる.
B:非ワード境界
*:前の要素は0回以上出現する.
+:前の要素が1回または複数回現れる.
{m,n}:前の要素は最低m回、最大n回である.
?:前の元素は最大1回出現し、{0,1}に等価である.
|:前または後の式と一致する.
#システムfactor変数:
[root@sh-web1 ~]# facter | grep oper*
operatingsystem => CentOS
operatingsystemmajrelease => 6
operatingsystemrelease => 6.5

システムのリリースバージョンを判断し、対応するパッケージをインストールする.
[root@sh-web1 ~]# cat apache.pp 
$packages = $operatingsystem ? {
    /(?i-mx:centos|redhat)/=> 'httpd',
    /(?i-mx:ubuntu|debin)/=> 'apache2',
}
    package {"$packages":
    ensure=> present,
}

puppetコードをローカルに適用する.
[root@sh-web1 ~]# puppet apply apache.pp 
Notice: Compiled catalog for sh-web1.localdomain in environment production in 0.04 seconds
Notice: /Stage[main]/Main/Package[httpd]/ensure: created
Notice: Finished catalog run in 2.31 seconds
[root@sh-web1 ~]# rpm -qa httpd
httpd-2.2.15-60.el6.centos.5.x86_64

i:大文字と小文字を無視することを表す.
m:「.」改行文字として使用する.
-:ある転送記号を使用しないことを示す.
X:無視モードの空白文字列とコメントを表す.
その他のケース:
ファイル権限の変更は、ユーザー・グループなどで行えます.
$allgroup = $operatingsystem ? {
        /(?i-mx:ubuntu|debin)/  => 'user1',
        default => 'root',
}
file {"/etc/passwd":
        ensure  => file,
        owner   => 'root',
        group   => "$allgroup",
}

undef
undefはruby言語のnilに等しい特殊な値であり、宣言されていないが依然として使用できる値はundef値に属し、undef用法である.
$packages = $operatingsystem ? {
        redhat  => 'httpd',
        centos  => 'httpd',
        #/(?i-mx:ubuntu|debin)/  => 'apache2',
        /(?i):(ubuntu|debin)/  => 'apache2',
        default => 'undef',
}
package {"$packages":
        ensure  => present,
}

コメント;オペレーティングシステムのバージョンに一致しない場合は、デフォルトはundefです.