覆盖elasticsearch cookbook中的属性

时间:2015-02-23 22:30:22

标签: elasticsearch automation chef chef-recipe cookbook

我正在尝试使用“elasticsearch / cookbook-elasticsearch”食谱与我的包装食谱。我想在我的包装器cookbook中覆盖cookbook-elasticsearch的以下默认属性。

default.elasticsearch[:rpm_url] = "https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.12.noarch.rpm"
default.elasticsearch[:rpm_sha] = "ab7ea2e00d8f1b73642e3ea44d9647b11e6b0b96"

食谱:https://github.com/elasticsearch/cookbook-elasticsearch

我如何在my-elasticsearch食谱中这样做?

cat site-cookbooks / my-elasticsearch / attributes / default.rb

override.elasticsearch[:rpm_url] = "https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.4.noarch.rpm"
override.elasticsearch[:rpm_sha] = "ec8b41c54a6d897479645b2507476e0824bc71db"

这是正确的吗?

我想将这本食谱用于厨师10

任何帮助

1 个答案:

答案 0 :(得分:1)

将信息添加到@ mark-oconnor评论:

Documentation about attributes in chef 10

建议的表示法是override['elasticsearch']['rpm_url'] = "new_value"访问属性的方法和符号方式过去一直存在问题。

由于厨师10中的食谱加载顺序并不总是清晰可预测,因此您必须使用override级别来确保在进行配方时使用正确的值。


评论后编辑:

在版本0.3.13的elasticsearch cookbook中,默认配方从tarball安装。

如果您希望使用打包安装,则必须在默认配置之前调用相应的配方,如默认配方中那样,如果已经安装了elasticsearch,则需要保护不安装tarball。

这个特殊情况的包装食谱中的正确食谱是:

include_recipe 'elasticsearch::rpm' # Take the overriden attributes and install package
include_recipe 'elasticsearch' # no need to ::default, if omitted it's the recipe loaded