我有一本包装食谱,里面有一个菜谱,菜谱/default.rb,内容如下:
include_recipe "apt"
node.override[:java][:jdk_version] = '7'
include_recipe "java"我有来自社区网站的apt和java食谱。我只用这个包装配方运行刀引导程序。
当我聚合节点时,它安装的是Java 6,而不是Java 7。我觉得有明显的遗漏,但我无法理解。难道node.override不应该使默认的jdk_version 6被覆盖吗?
发布于 2013-11-08 19:34:49
下面是我如何让它与包装食谱一起工作。
我必须将这个语句添加到属性/default.rb中:
override[:java][:openjdk_packages] = [
  "openjdk-7-jdk", "openjdk-7-jre-headless"
  ]我尝试在这个位置添加jdk_version,但是它没有工作。我尝试在包装食谱中添加这个语句(用node.override),但它也没有工作。
这里描述了为什么会出现这种情况。
发布于 2013-11-05 21:48:14
用“我不是厨师专家”来限定我的答案。然而,我认为问题在于厨师中的“嵌套属性”。我不认为你可以直接重写这个版本,因为在仔细研究了你的小菜谱可能有问题的每一件事之后,我发现:
http://lists.opscode.com/sympa/arc/chef/2012-10/msg00265.html
在设置默认jdk版本之后,还有一些其他属性正在被设置。如果你看这里:
http://community.opscode.com/cookbooks/java/source
您将看到default['java']['openjdk_packages']是使用默认版本设置的,openjdk的菜谱(很可能是所选择的"install_flavor“)只查看该属性。它不直接在jdk_version中读取。有趣的是,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"]其他"platform_family“选项可以在这里找到:https://github.com/opscode-cookbooks/java/blob/master/attributes/default.rb
https://stackoverflow.com/questions/19798774
复制相似问题