В текущих версиях Puppet и Facter я получаю ту же информацию в lsbdistid
и operatingsystem
факты - я не смотрю osfamily
потому что в Gentoo Linux он сообщает общую строку «Linux».
При использовании этой информации в модулях Puppet (например, для выбора имен пакетов для установки) есть ли какая-либо техническая причина или установленный консенсус для использования lsbdistid
или operatingsystem
?
мне нравиться osfamily
. LSB часто не устанавливается по умолчанию, а в некоторых дистрибутивах, таких как RHEL / CentOS, цепочка зависимостей для lsb_release
огромный. Кроме того, если вы не знаете дистрибутив, как узнать имя пакета LSB? operatingsystem
раздражает, потому что меня обычно не волнует, RedHat против CentOS или Debian против Ubuntu. Я хочу знать семейства дистрибутивов, потому что идиосинкразии между дистрибутивами внутри семей обычно одинаковы.
Поддержка Gentoo была слился в фактера семья вчера (13 февраля 2013 г.) он должен выпустить следующий выпуск. Вы всегда можете использовать комбинацию 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
}
}
Это немного сложно, потому что, в конце концов, каждая ОС работает по-своему. Прежде всего решите, какие дистрибутивы ваш модуль хочет поддерживать, а затем протестируйте его.
Также я не вижу причин, почему бы не использовать оба факта как способ отличить распределение. Там нет ничего плохого.