【发布时间】: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