我时不时会使用 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 实例上运行代理时,我最终得到:
错误:无法从远程服务器检索目录:服务器上出现错误 400:不支持的版本丽贝卡在节点 some.host.com 上的 /etc/puppet/modules/java/manifests/params.pp:50
丽贝卡是我目前正在处理的Linux Mint版本,与Ubuntu Trusty相对应。
但是每个 Mint 版本都基于一个 Ubuntu 版本,这应该可以正常工作。(至少可以尝试一下。)我真的很想告诉 facter 返回等效的 Ubuntu lsb 信息,而不是修改模块和所有其他类似的模块。虽然这可能是对社区的服务......
有人尝试过解决这个问题吗?有什么想法吗?
答案1
这一页似乎意味着你可以通过设置环境变量来覆盖 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
?
我没有测试过这个,但事实只是节点报告的事情,因此应该很容易被覆盖/编辑......