使用chef安装java7,can';我不能让它工作
我有一本包装食谱,其中有一个食谱,recipes/default.rb,内容如下:使用chef安装java7,can';我不能让它工作,java,chef-infra,Java,Chef Infra,我有一本包装食谱,其中有一个食谱,recipes/default.rb,内容如下: include_recipe "apt" node.override[:java][:jdk_version] = '7' include_recipe "java" 我有来自社区网站的apt和java食谱。我只是在用这个包装材料做刀子引导 当我聚合节点时,它会安装Java6而不是Java7。我觉得有一些明显的东西我遗漏了,但我无法理解。node.override不应该使6的默认jdk_版本被覆盖吗?用“我
include_recipe "apt"
node.override[:java][:jdk_version] = '7'
include_recipe "java"
我有来自社区网站的apt和java食谱。我只是在用这个包装材料做刀子引导
当我聚合节点时,它会安装Java6而不是Java7。我觉得有一些明显的东西我遗漏了,但我无法理解。node.override不应该使6的默认jdk_版本被覆盖吗?用“我不是厨师专家”来限定我的答案。。。但是,我认为问题在于Chef中的“嵌套属性”。我不认为你可以直接忽略这个版本,因为在仔细研究了你的小菜谱中可能出现的问题后,我发现:
在设置默认jdk版本之后,还将设置一些其他属性。如果你看这里:
您将看到default['java']['openjdk\u packages']
使用该默认版本设置,而openjdk配方(可能是选择的“安装风格”)只查看该属性。它不直接读取jdk_版本。有趣的是,java::oracle配方(以及java::oracle_i386和java::oracle_rpm)直接读入了版本,因此您最初的尝试可以做到这一点
我会根据您的特定平台,尝试使用以下选项之一设置版本:
Redhat/CentOS: node.override[:java][:openjdk_packages] = ["java-1.7.0-openjdk", "java-1.7.0-openjdk-devel"]
Debian/Ubuntu: node.override[:java][:openjdk_packages] = ["openjdk-7-jdk"]
其他“平台家庭”的选择可以在这里找到:以下是我如何让它与包装烹饪书一起使用的 我必须将此语句添加到attributes/default.rb中:
override[:java][:openjdk_packages] = [
"openjdk-7-jdk", "openjdk-7-jre-headless"
]
我尝试在这个位置添加jdk_版本,但没有成功。我尝试在包装器cookbook配方中添加此语句(使用node.override),但也没有成功
这是一个关于为什么会出现这种情况的描述。很好,你解决了它,但出于好奇,我的解决方案是不是有点不正确?看起来我是对的。你的帮助很大,但这只帮了我一部分。有一个特定的地方需要设置这些设置。否则它不会工作。链接目前已断开。这对我完全有效。不知道为什么覆盖其他地方的属性不起作用。