[英]How to install java 7 in chef cookbook using json override
我的厨师食谱中有一个网络服务器角色,就像这样
name "webserver"
'nginx' => {
'port' => "80"
},
'java' => {
'openjdk_version' => 7
}
Berksfile
cookbook "java"
我正在尝试安装Java 7-似乎找不到在json覆盖内执行此操作的示例。
当前错误为ERROR:选项版本必须为[String,Array]! 您通过了8。
谢谢
如果您使用的是角色,则无需覆盖任何内容,只需将openjdk_version
属性设置为角色的default_attributes部分中的一部分即可。 该属性在本食谱的attributes/default.rb
设置为nil
,因此您只需要遵循Chef的正常优先顺序进行设置即可 。
范例(JSON):
{
"name": "webserver",
"default_attributes": {
"nginx": {
"port": "80"
},
"java": {
"openjdk_version": "7"
}
}
}
使用Ruby DSL也是一样:
name "webserver"
default_attributes => {
"nginx" => {
"port" => "80"
},
"java" => {
"openjdk_version" => "7"
}
}
如果您使用某种包装食谱,则还可以通过该食谱的属性文件设置属性,例如: default[:java][:openjdk_version] = "7"
此ERROR: Option version must be a kind of [String, Array]! You passed 8.
ERROR: Option version must be a kind of [String, Array]! You passed 8.
错误,因为您将属性设置为整数,而不是字符串。 如果您查看食谱的代码 ,则可以看到在哪里调用了version
选项。 老实说,我从未使用过该选项,但听起来好像它想要一个字符串,并且示例支持该概念(有关软件包资源,请参见Chef文档-我无法发布链接,因为我已经在其中包含了太多链接)发布)。
至于使用Berkshelf,请记住Berkshelf用于解决依赖关系,并使您在管理所述依赖关系并将其上载到您的节点或Chef服务器时更加轻松。 它不用于设置Chef属性。
我希望这有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.