【问题标题】:How to access java_home when using Chef Java cookbook使用 Chef Java 食谱时如何访问 java_home
【发布时间】:2016-01-15 19:51:22
【问题描述】:

要在密钥库中导入证书,我想访问属性java/java_home

在 Chef 服务器上,我可以手动读取它的值。它在属性选项卡上显示为/usr/lib/jvm/java-7-oracle-amd64

现在我想在我的厨师食谱中做同样的事情。当我检查node['java] 它显示

node['java']: {"jdk_version"=>"7", "arch"=>"x86_64", "openjdk_packages"=>[], "openjdk_version"=>nil, "accept_license_agreement"=>false, "set_default"=>true, "alternatives_priority"=>1062, "set_etc_environment"=>false, "ark_retries"=>0, "ark_retry_delay"=>2, "install_flavor"=>"oracle", "oracle"=>{"accept_oracle_download_terms"=>true}, "jdk"=>{"6"=>{"bin_cmds"=>["appletviewer", "apt", "ControlPanel", "extcheck", "HtmlConverter", "idlj", "jar", "jarsigner", "java", "javac", "javadoc", "javah", "javap", "javaws", "jconsole", "jcontrol", "jdb", "jhat", "jinfo", "jmap", "jps", "jrunscript", "jsadebugd", "jstack", "jstat", "jstatd", "jvisualvm", "keytool", "native2ascii", "orbd", "pack200", "policytool", "rmic", "rmid", "rmiregistry", "schemagen", "serialver", "servertool", "tnameserv", "unpack200", "wsgen", "wsimport", "xjc"], "x86_64"=>{"url"=>"http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin", "checksum"=>"6b493aeab16c940cae9e3d07ad2a5c5684fb49cf06c5d44c400c7993db0d12e8"}, "i586"=>{"url"=>"http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin", "checksum"=>"d53b5a2518d80e1d95565f0adda54eee229dc5f4a1d1a3c2f7bf5045b168a357"}}, "7"=>{"bin_cmds"=>["appletviewer", "apt", "ControlPanel", "extcheck", "idlj", "jar", "jarsigner", "java", "javac", "javadoc", "javafxpackager", "javah", "javap", "javaws", "jcmd", "jconsole", "jcontrol", "jdb", "jhat", "jinfo", "jmap", "jps", "jrunscript", "jsadebugd", "jstack", "jstat", "jstatd", "jvisualvm", "keytool", "native2ascii", "orbd", "pack200", "policytool", "rmic", "rmid", "rmiregistry", "schemagen", "serialver", "servertool", "tnameserv", "unpack200", "wsgen", "wsimport", "xjc"], "x86_64"=>{"url"=>"http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.tar.gz", "checksum"=>"bea330fcbcff77d31878f21753e09b30"}, "i586"=>{"url"=>"http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-i586.tar.gz", "checksum"=>"54899d0733d9a8697da59de79a02cc8f"}}, "8"=>{"bin_cmds"=>["appletviewer", "apt", "ControlPanel", "extcheck", "idlj", "jar", "jarsigner", "java", "javac", "javadoc", "javafxpackager", "javah", "javap", "javaws", "jcmd", "jconsole", "jcontrol", "jdb", "jdeps", "jhat", "jinfo", "jjs", "jmap", "jmc", "jps", "jrunscript", "jsadebugd", "jstack", "jstat", "jstatd", "jvisualvm", "keytool", "native2ascii", "orbd", "pack200", "policytool", "rmic", "rmid", "rmiregistry", "schemagen", "serialver", "servertool", "tnameserv", "unpack200", "wsgen", "wsimport", "xjc"], "x86_64"=>{"url"=>"http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-x64.tar.gz", "checksum"=>"e145c03a7edc845215092786bcfba77e"}, "i586"=>{"url"=>"http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-i586.tar.gz", "checksum"=>"b5b16247f66643727d9b6d4bc7c5efda"}}}}

我通过网络界面看到的许多属性都是可以访问的,但不幸的是java_home 不存在。

我可以通过 Chef 食谱读取此值吗?还是只能通过网络界面看到?

还有其他方法可以知道 Java 的位置吗?

我尝试了环境变量 $JAVA_HOME,它曾经可以工作,但最近我注意到对于 Chef 客户端运行,它现在也为零。

在不知道 Java 位置的情况下,使用 Chef 在密钥存储中导入证书的正确方法是什么?

【问题讨论】:

  • 如何包含 java 食谱?如果你做得不对,你可能永远不会调用 set_attribute_from_version 食谱,但在这种情况下,java_home 不应该出现在 chef_server 上(除非你不是在谈论同一台机器,这是我根据你的描述可以看到的唯一解决方案)。如果我错了,请提供有关您的运行列表的更多详细信息。回答您的一个问题:chef_server UI 上可见的任何属性都是可访问的。
  • 我想我通过在试图读取 java_home 的说明书之前包含 java 说明书来解决这个问题。我认为顺序无关紧要。
  • 我确实很重要,因为 java_home 属性是由 java 食谱中的配方而不是属性文件填充的,因此在配方 set_attributes_from_version 编译之前,该属性是未知的,所以如果你试图在编译时从之前的配方中访问这个属性,它不会起作用。最好的主意通常是在需要它的说明书开始时包含_recipe 'java',这样您就可以确定在尝试访问它们之前已经完成了任何必要的操作。

标签: java certificate chef-infra keystore self-signed


【解决方案1】:

如果您使用的是java cookbook,则应在node['java']['java_home'] 上提供java_home。这就是您应该在所有厨师食谱中使用的内容,只要它们与将填充此值的 java 食谱一起运行。

我认为您在检查中看不到 node['java']['java_home'] 属性,因为您尚未将其设置为厨师服务器上的节点属性/环境属性。

对于$JAVA_HOME 环境变量,您应该将node['java']['set_etc_environment'] 设置为true,(可选择在/etc/environment 中设置JAVA_HOME,默认为false)。

【讨论】:

  • 您的假设听起来不合逻辑,因为该值在 chef_server 上可见,节点将在开始运行时获取值。
  • hmm...不知道你为什么这么说...检查的输出Onno has copy pasteed不包括java_home...是吗??
  • 没有。但是屏幕截图确实如此,因此两者来自两个不同的节点或有问题。该属性不必在厨师服务器上,因为 Java 食谱应该填充它(正如您已经说过的)。
猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多