我使用Puppet不时设置虚拟机。 有时我在这些虚拟机上运行Linux Mint。 我有很多我喜欢使用的Puppet模块,但是当他们检查LSB事实时,他们从奇怪的Linux Mint版本中退缩。
例如,我正在使用官方的Puppet Labs Java模块来安装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实例上运行代理时,我最终得到:
错误:无法从远程服务器检索目录:SERVER上的错误400:不受支持的发行版rebecca在/etc/puppet/modules/java/manifests/params.pp:50节点上some.host.com
rebecca是我正在处理的Linux Mint版本,与Ubuntu Trusty相对应。
但是每个Mint版本都是基于Ubuntu版本的,而且应该可以正常工作。 (至less可以尝试一下)我真的很想告诉facter返回等价的Ubuntu lsb信息,而不是修改模块,以及所有其他模块。 虽然这可能是对社区的服务…
有人试图解决这个问题吗? 想法?
这个页面似乎意味着你可以通过设置一个环境variables来覆盖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
在这种情况下,你可以用variablesFACTER_lsbdistcodename=trusty来构build每个rebecca主机吗?
我没有testing过这个,但事实只是由节点报告的事情,因此应该很容易被覆盖/可编辑…