PuppetとFacterの現在のバージョンでは、lsbdistid
とoperatingsystem
のファクトで同じ情報を取得します-GentooLinuxでは一般的な "を報告するため、osfamily
は調べません。 Linux」文字列。
Puppetモジュールでその情報を使用する場合(たとえば、インストールするパッケージ名を選択するため)、lsbdistid
またはoperatingsystem
を使用する技術的な理由または確立されたコンセンサスはありますか?
osfamily
が好きです。 LSBはデフォルトでインストールされないことが多く、RHEL/CentOSなどの一部のディストリビューションでは、lsb_release
の依存関係チェーンが巨大です。さらに、ディストリビューションがわからない場合、LSBパッケージの名前をどのように知っていますか? operatingsystem
は、RedHatとCentOSのどちらであるか、DebianとUbuntuのどちらであるかを通常は気にしないため、煩わしいものです。ディストリビューション間の特異性は通常、ファミリー内で同じであるため、ディストリビューションファミリーについて知りたいです。
Gentooのサポートは merged facter's osfamily 昨日(2013年2月13日)でした。次のリリースになるはずです。 osfamily
を組み合わせてDebianまたはRedHatをチェックし、operatingsystem
を使用してGentooをチェックすることができます。
osfamily
とoperatingsystem
は、基本的にはif
またはcase
の条件の集まりです。ニーズに基づいて、カスタムファクトまたはクラスパラメータとして独自にカスタマイズするのは非常に簡単です。お気に入り:
class osfacts {
if $::kernel == 'Linux' {
$os = $::operatingsystem ? {
Gentoo => 'Gentoo',
default => $::osfamily,
}
}
elsif $::kernel == 'SunOS' {
$os = $::operatingsystem
}
elsif ($::operatingsystem == 'Darwin') and
($::macosx_productname == 'Mac OS X') {
$os = 'MacOSX'
}
else {
$os = $::operatingsystem
}
}
結局のところ、すべてのOSの動作が少し異なるため、これは少し注意が必要です。まず最初に、モジュールがサポートするディストリビューションを決定し、それをテストします。
また、分布を区別する方法として両方の事実を使用しない理由はわかりません。それは何も悪いことではありません。