木偶的事实:我们应该使用lsbdistid还是操作系统?

使用当前版本的Puppet和Facter,我在lsbdistidoperatingsystem事实中得到了相同的信息 – 我没有看osfamily因为在Gentoo Linux上它报告了一个通用的“Linux”string。

在Puppet模块中使用这些信息时(例如select要安装的软件包名称),在使用lsbdistidoperatingsystem是否有任何技术原因或达成共识?

我喜欢osfamily 。 LSB通常不是默认安装的,在一些发行版(如RHEL / CentOS)上, lsb_release的依赖链是巨大的。 另外,如果你不知道发行版如何知道LSB包的名字? operatingsystem是令人讨厌的,因为我通常不关心是RedHat与CentOS,还是Debian与Ubuntu。 我想了解发行家族,因为发行者之间的特质通常在家庭内是相同的。

Gentoo的支持昨天(2013年2月13日)被并入了facter的osfamily ,它应该发布下一个版本。 你总是可以使用osfamily的组合检查Debian或RedHat和operatingsystem来检查Gentoo。

osfamilyoperatingsystem基本上只是一堆ifcase条件。 根据您的需要定制您自己的自定义事实或类参数将是相当容易的。 喜欢:

 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 } } 

这有点棘手,因为在一天结束时,每个操作系统的行为有点不同。 首先决定你的模块支持哪些发行版,然后testing它。

我也看不出有什么理由不以这两个事实来区分分配。 没有什么不妥。