使用 Chef Solo 覆盖属性

使用 Chef Solo 覆盖属性

我正在尝试使用 Chef Solo 和以下食谱安装 Maven 3:

http://community.opscode.com/cookbooks/maven

该食谱默认安装 Maven 2,我第一次运行它时,它按预期安装了 Maven 2。

后来我修改了我的solo.json文件,如下所示:

{
    "maven": {
        "version": "3"
    },
    "run_list": [
        "recipe[java]",
        "recipe[maven]"
    ]
}

但是 Chef 没有将 Maven 更新到版本 3。我不知道这是因为我错误地指定了 override 属性还是存在其他问题。我以此作为参考:

http://wiki.opscode.com/display/chef/Chef+Solo#ChefSolo-JSON%2CAttributesandRecipes

谢谢。

答案1

嗯。应该有 chef 输出来指示哪里出了问题。

查看食谱,我发现它正在尝试下载 maven 3,如下所示:http://www.apache.org/dist/maven/binaries/apache-maven-3.0.3-bin.tar.gz(如 maven/attributes/default.rb 中指定的 maven.3.url 属性)。

如果您尝试 wget 该 URL,您将得到 404。因此,显然该食谱已因此损坏。不过,这应该显示在 chef 运行日志中。

您可以尝试修改食谱,因为它已经过时了。您还可以尝试将节点的 maven.3.url 属性设置为更新的内容,这样您就不会碰食谱,例如:

"maven": {
    "version": "3",
    "3": {
      "url": "http://www.apache.org/dist/maven/binaries/apache-maven-3.0.4-bin.tar.gz"
    }
},

或者,如果您想继续使用 3.0.3:

"maven": {
    "version": "3",
    "3": {
      "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.3-bin.tar.gz"
    }
},

相关内容