OSがCent 6.xとCent 5.xのどちらを実行しているかを判断するには、facterとpuppetをどのように使用しますか?
facter operatingsystemrelease
6.4
私はメジャーリリースのみを気にします(6)
私はawkの使用を考えましたが、より「人形のマニフェスト」に適したより良い方法があるはずです。
#This works, but is ugly trying to use this in a puppet manifest
facter operatingsystemrelease |awk -F. '{print $1}'
6
更新:
新しいバージョンのfacterには、私のバージョンにはないメジャーリリースに関する追加情報があるようです。私の最初のプロビジョニングでは、ファクターが古くなっていると想定する必要があります。
facter --version
1.6.4
puppet --version
2.7.20
次のコマンドを使用して、メジャーリリースを示す可能性のあるその他の事実を検索してみました
facter |grep 6
operatingsystemmajreleaseがあります
% facter operatingsystemmajrelease
6
Redhat-lsb-coreパッケージがインストールされている場合、facterはlsbが提供するファクト(lsbmajdistreleaseを含む)のファミリーも取得します。
% facter |grep ^lsb
lsbdistcodename => Final
lsbdistdescription => CentOS release 6.4 (Final)
lsbdistid => CentOS
lsbdistrelease => 6.4
lsbmajdistrelease => 6
lsbrelease => :base-4.0-AMD64:base-4.0-noarch:core-4.0-AMD64:core-4.0-noarch
注:operatingsystemmajrelease
を使用するには、少なくともFacter 1.7が必要です。 Facter 1.6のコアファクト は非常に制限されています。
あなたは、インストールバージョンに基づいて何らかの決定をしようとしていると思います。
ロジックで正規表現を使用できます。
だから次のようなもの:
case $operatingsystemrelease {
/^6.*/: {
//do 6.x stuff
}
/^5.*/: {
//do 5.x stuff
}
}
またはif
の方があなたのスタイルの場合:
if $operatingsystemrelease =~ /^6.*/ {
//do 6.x stuff
}
elsif $operatingsystemrelease =~ /^5.*/ {
// do 5.x stuff
}
すべての因子ファクトは、マニフェストのグローバルスコープ変数で使用できることに注意してください。
あなたが混合環境を持っているなら、おそらくそれを次のようなものにラップしたくなるでしょう:
if $operatingsystem == "CentOS" {
}