Время от времени я использую 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
?
Я не тестировал это, но факты - это просто вещи, сообщаемые узлом, и поэтому их следует легко переопределить / редактировать ...