【问题标题】:Can we merge JAVA_OPTS variables through recipe in chef?我们可以通过厨师中的食谱合并 JAVA_OPTS 变量吗?
【发布时间】:2015-11-18 16:35:19
【问题描述】:

我已经通过一些说明书安装了 Java 并设置了一些默认变量,现在我想通过我的说明书添加更多变量(特定于应用程序)。我如何通过 Chef 中的食谱做到这一点。我试图在setenv.sh 中传递一些变量,但它覆盖了默认值,而不是我想合并变量并覆盖现有的变量值。

我的代码在setenv.sh:

export JAVA_OPTS="$JAVA_OPTS -Xmx2048m"

其中$JAVA_OPTS - 默认变量

【问题讨论】:

  • 使用 Tomcat 食谱安装的 java 和 JAVA_OPTS 已经导出,现在我想添加更多 env 变量,但我不想进行属性覆盖。

标签: linux chef-infra


【解决方案1】:

第一种方法是更新应用程序说明书中定义基础值的属性,因为在评估配方之前读取属性,您的文件最终会得到正确的值。

您并没有说您使用的是哪本食谱,所以我将基于 tomcat cookbook 的示例

本食谱定义了一个属性default['tomcat']['java_options'] = '-Xmx128M -Djava.awt.headless=true'

通过使用类似的东西来补充这一点的最简单方法

default['tomcat']['java_options'] = "#{default['tomcat']['java_options']} -Xmx2048m" 

明显的问题是您最终得到 2 个 -Xmx 值,通常 JVM 会采用最新的值,但是当有很多覆盖时,很难找到哪个选项是哪个值。

第二个选项是利用jvmargs cookbook,它提供了帮助函数来定义java选项并在你的setenv.sh模板中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多