傀儡事实:我们应该使用 lsbdistid 还是操作系统?

Luk*_*404 2 puppet facter

在当前版本的 Puppet 和 Facter 中,我得到了相同的信息lsbdistidoperatingsystem事实——我不看,osfamily因为在 Gentoo Linux 上它报告一个通用的“Linux”字符串。

在 Puppet 模块中使用该信息时(例如,用于选择要安装的软件包名称)是否有任何技术原因或已建立的共识来使用lsbdistidoperatingsystem

Ant*_*hen 5

我喜欢osfamily。默认情况下通常不会安装 LSB,并且在某些发行版(如 RHEL/CentOS)上,其依赖链lsb_release是巨大的。另外,如果您不知道发行版,您怎么知道 LSB 包的名称?operatingsystem很烦人,因为我通常不在乎它是 RedHat 与 CentOS,还是 Debian 与 Ubuntu。我想了解发行版家族,因为发行版之间的特质在家族内部通常是相同的。

Gentoo 支持已于昨天(2013 年 2 月 13 日)合并facterosfamily 中,它应该会发布下一个版本。您始终可以使用 的组合osfamily来检查 Debian 或 RedHat 以及operatingsystem检查 Gentoo。

osfamily并且operatingsystem基本上只是一堆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
  }
}
Run Code Online (Sandbox Code Playgroud)