Факты о марионетках: мы должны использовать 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
  }
}

Это немного сложно, потому что в конце дня каждая ОС работает немного по-своему. Прежде всего решите, какие дистрибутивы ваш модуль хочет поддерживать, а затем протестируйте его.

Также я не вижу причин, почему бы не использовать оба факта как способ различения распределения. Там нет ничего плохого.

Другие вопросы по тегам