web-dev-qa-db-ja.com

人形の事実:lsbdistidまたはオペレーティングシステムを使用する必要がありますか?

PuppetとFacterの現在のバージョンでは、lsbdistidoperatingsystemのファクトで同じ情報を取得します-GentooLinuxでは一般的な "を報告するため、osfamilyは調べません。 Linux」文字列。

Puppetモジュールでその情報を使用する場合(たとえば、インストールするパッケージ名を選択するため)、lsbdistidまたはoperatingsystemを使用する技術的な理由または確立されたコンセンサスはありますか?

2
Luke404

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をチェックすることができます。

osfamilyoperatingsystemは、基本的には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
  }
}
5
Anton Cohen

結局のところ、すべてのOSの動作が少し異なるため、これは少し注意が必要です。まず最初に、モジュールがサポートするディストリビューションを決定し、それをテストします。

また、分布を区別する方法として両方の事実を使用しない理由はわかりません。それは何も悪いことではありません。

0
golja