【问题标题】:Using chef to install Java 7, can't get it to work使用 Chef 安装 Java 7,无法正常工作
【发布时间】:2013-11-05 20:54:41
【问题描述】:

我有一本包装食谱,里面有一个食谱,recipes/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 吗?

【问题讨论】:

    标签: java chef-infra


    【解决方案1】:

    用“我不是厨师专家”来限定我的答案......但是,我认为问题在于 Chef 中的“嵌套属性”。我不认为你可以直接覆盖这个版本,因为在剥离了你的食谱可能有问题的所有可能的事情之后,我发现了这个:

    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

    【讨论】:

    • 这完全适合我。不知道为什么覆盖其他地方的属性不起作用。
    【解决方案2】:

    这是我如何让它与包装食谱一起工作的。

    我不得不将此语句添加到 attributes/default.rb:

    override[:java][:openjdk_packages] = [
      "openjdk-7-jdk", "openjdk-7-jre-headless"
      ]
    

    我尝试在此位置添加 jdk_version,但没有成功。我尝试在包装食谱食谱中添加此语句(使用 node.override),但它也不起作用。

    Here 描述了为什么会这样。

    【讨论】:

    • 很高兴您解决了它,但出于好奇,我的解决方案是否不正确?看来我是对的。
    • 你的帮助很有帮助,但它只是让我获得了一部分。有一个特定的地方需要这些设置。否则将无法正常工作。
    • 链接当前已损坏。
    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 2019-10-19
    • 2014-10-10
    • 1970-01-01
    • 2012-08-19
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多