Linux 我们可以通过chef中的recipe合并JAVA_OPTS变量吗?
我已经通过一些cookbook安装了Java,并设置了一些默认变量,现在我想通过我的cookbook添加更多的变量(特定于应用程序)。我如何通过厨师的食谱做到这一点。我试图在Linux 我们可以通过chef中的recipe合并JAVA_OPTS变量吗?,linux,chef-infra,Linux,Chef Infra,我已经通过一些cookbook安装了Java,并设置了一些默认变量,现在我想通过我的cookbook添加更多的变量(特定于应用程序)。我如何通过厨师的食谱做到这一点。我试图在setenv.sh中传递一些变量,但它覆盖了默认值,而我想合并这些变量并覆盖现有的变量值 setenv.sh中的我的代码: export JAVA_OPTS="$JAVA_OPTS -Xmx2048m" 当$JAVA_OPTS-默认变量时,第一种方法是更新应用程序手册中定义基本值的属性,因为在评估配方之前读取属性,所以文件
setenv.sh
中传递一些变量,但它覆盖了默认值,而我想合并这些变量并覆盖现有的变量值
setenv.sh
中的我的代码:
export JAVA_OPTS="$JAVA_OPTS -Xmx2048m"
当
$JAVA_OPTS
-默认变量时,第一种方法是更新应用程序手册中定义基本值的属性,因为在评估配方之前读取属性,所以文件将以正确的值结束
你没有说你用的是哪本食谱,所以我将以
本食谱定义了一个属性default['tomcat']['java_options']='-Xmx128M-Djava.awt.headless=true'
最简单的方法是使用
default['tomcat']['java_options'] = "#{default['tomcat']['java_options']} -Xmx2048m"
明显的问题是,您最终得到了2个-Xmx
值,通常JVM会采用最新的值,但是当有大量覆盖时,很难找到哪个值的选项
第二种方法是利用wich gives helpers函数定义java选项,并在最后在
setenv.sh
模板中使用。第一种方法是更新应用程序手册中定义基值的属性,由于在评估配方之前读取了属性,因此您的文件将以正确的值结束
你没有说你用的是哪本食谱,所以我将以
本食谱定义了一个属性default['tomcat']['java_options']='-Xmx128M-Djava.awt.headless=true'
最简单的方法是使用
default['tomcat']['java_options'] = "#{default['tomcat']['java_options']} -Xmx2048m"
明显的问题是,您最终得到了2个-Xmx
值,通常JVM会采用最新的值,但是当有大量覆盖时,很难找到哪个值的选项
第二种选择是利用wich提供的helpers函数来定义java选项,并在最后的
setenv.sh
模板中使用。使用Tomcat cookbook和java选项安装的java已经导出,现在我想向它添加更多的环境变量,但我不想进行属性覆盖。已经导出了使用Tomcat cookbook和java_OPTS安装的java,现在我想向它添加更多的环境变量,但我不想进行属性覆盖。