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