我们可以通过厨师的食谱合并JAVA_OPTS变量吗?

时间:2015-11-18 01:26:12

标签: linux chef

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

setenv.sh中的代码:

export JAVA_OPTS="$JAVA_OPTS -Xmx2048m"

其中$JAVA_OPTS - 默认变量

1 个答案:

答案 0 :(得分:0)

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

您并未说明您使用的是哪本食谱,因此我将该示例基于tomcat cookbook

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

通过使用

之类的东西来补充这一点的最简单方法
default['tomcat']['java_options'] = "#{default['tomcat']['java_options']} -Xmx2048m" 

显而易见的问题是,你最终会得到2个-Xmx值,通常JVM会采用最新值,但是当覆盖很多时,很难找到哪个选项值。< / p>

第二个选项是利用jvmargs cookbook给予帮助函数来定义java选项并在最后使用setenv.sh模板。