{ 'port' => "80" }, 'java' => { 'o-6ren">
gpt4 book ai didi

java - 如何使用 json 覆盖在 Chef Recipe 中安装 java 7

转载 作者:行者123 更新时间:2023-12-02 04:33:38 25 4
gpt4 key购买 nike

我的 Chef Recipe 中有一个网络服务器角色,就像这样

name "webserver"

'nginx' => {
'port' => "80"
},
'java' => {
'openjdk_version' => 7
}

伯克斯文件

cookbook "java"

我正在尝试安装 java 7 - 似乎找不到在 json 覆盖中执行此操作的示例。

当前错误是错误:选项版本必须是一种[字符串,数组]!您已通过 8 分。

谢谢

最佳答案

如果您使用角色,则无需覆盖任何内容,只需将 openjdk_version 属性设置为角色的 default_attributes 部分的一部分即可。该属性在说明书的 attributes/default.rb 中设置为 nil,因此您只需按照 Chef 的正常 order of precedence 进行设置即可。 .

示例(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"
}
}

如果您使用某种包装 Recipe ,您还可以通过该 Recipe 的属性文件设置属性,例如:默认[:java][:openjdk_version] = "7"

错误:选项版本必须是一种[字符串,数组]!您传递了 8. 错误,这是因为您将属性设置为整数,而不是字符串。如果你看cookbook's code ,您可以看到 version 选项被调用的位置。老实说,我从未使用过该选项,但听起来它需要一个字符串,并且示例支持该概念(请参阅 Chef 文档以获取包资源 - 我无法发布链接,因为我在此已经有太多链接帖子)。

至于使用 Berkshelf,请记住 Berkshelf 是为了解决依赖关系,让您在管理所述依赖关系并将其上传到您的节点或 Chef 服务器时变得更轻松。它不用于设置 Chef 属性。

希望这会有所帮助!

关于java - 如何使用 json 覆盖在 Chef Recipe 中安装 java 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31116349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com