我已经通过一些食谱安装了Java并设置了一些默认变量,现在我想通过我的食谱添加一些更多的变量(特定于应用程序)。我怎么能通过Chef中的食谱来做到这一点。我试图在setenv.sh
中传递一些变量,但是它会覆盖默认值而不是我要合并变量并覆盖现有变量值。
setenv.sh
中的代码:
export JAVA_OPTS="$JAVA_OPTS -Xmx2048m"
其中$JAVA_OPTS
- 默认变量
答案 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
模板。