Назад | Перейти на главную страницу

Как мне обрабатывать экземпляры Mint с помощью Puppet?

Время от времени я использую Puppet для настройки виртуальных машин. Иногда я запускаю Linux Mint на этих виртуальных машинах. У меня есть много модулей Puppet, которые я люблю использовать, но когда они проверяют факты LSB, они отталкиваются от странной версии Linux Mint.

Например, я использую официальный Java-модуль Puppet Labs для установки JDK и т.п. Файл params.pp выглядит так (большую часть я вырезал):

class java::params {

  case $::osfamily {
    'RedHat': {...}
    'Debian': {
      case $::lsbdistcodename {
        default: { fail("unsupported release ${::lsbdistcodename}") }
        'lenny', 'squeeze', 'lucid', 'natty': {
          $java  = {
            'jdk' => {
              'package'          => 'openjdk-6-jdk'...
            },
            'jre' => {
              'package'          => 'openjdk-6-jre-headless...
            },
          }
        }
        'wheezy', 'jessie', 'precise','quantal','raring','saucy', 'trusty', 'utopic': {
             ...I could add 'rebecca' to the above list, and that would probably do it
          $java =  {
            'jdk' => {
              'package'          => 'openjdk-7-jdk'...
            },
            'jre' => {
              'package'          => 'openjdk-7-jre-headless'
            },
            'oracle-jre' => {...},
            'oracle-jdk' => {...},
          }
        }
      }
    }
...
    default: { fail("unsupported platform ${::osfamily}") }
  }

когда я запускаю агент на экземпляре Mint, я в итоге получаю:

Ошибка: не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: неподдерживаемый выпуск Ребекка в /etc/puppet/modules/java/manifests/params.pp:50 на узле some.host.com

Ребекка - это версия Linux Mint, с которой я работаю в данный момент, которая соответствует Ubuntu Trusty.

Но каждая версия Mint основана на версии Ubuntu, и это должно работать нормально. (По крайней мере, достаточно хорошо, чтобы попробовать.) Я действительно хотел бы сказать фактеру, чтобы он возвращал эквивалентную информацию Ubuntu lsb, вместо того, чтобы изменять модуль и все другие модули, подобные ему. Хотя это может быть полезно для общества ...

Кто-нибудь пытался решить эту проблему? Идеи?

Эта страница похоже, подразумевается, что вы можете переопределить факты Facter, установив переменную среды:

# show the operating system we are running (retrieved from facter)
$ puppet -e 'notify { "We are running on $operatingsystem": }'
notice: We are running on Fedora

# override $operatingsystem for testing purposes
$ FACTER_operatingsystem=Debian puppet -e 'notify { "We are running on $operatingsystem": }'
notice: We are running on Debian

В этом случае вы сможете построить каждый rebecca хост с переменной FACTER_lsbdistcodename=trusty?

Я не тестировал это, но факты - это просто вещи, сообщаемые узлом, и поэтому их следует легко переопределить / редактировать ...