如何在厨师中设置节点配置?

时间:2015-05-01 17:21:58

标签: chef

我有一个安装elasticsearch的包装食谱。

该手册使用以下语法支持动态配置文件:

node.elasticsearch[:custom_config]

https://github.com/elastic/cookbook-elasticsearch/blob/f7fb420a8641cbfa3e76acd64714dcc16ac6e274/templates/default/elasticsearch.yml.erb#L9-L16

当我尝试在我的包装器食谱中实现它时,我收到以下错误:

   12>> node[:elasticsearch][:custom_config] = {'indices.breaker.fielddata.limit' => '75%'}
        13:  node[:elasticsearch][:custom_config] = {'indices.fielddata.cache.size' => '65%'}
        14:  
        15:  
        16:  
        17:  # Work around for issue when no ssl certs are present
        18:  # https://github.com/elastic/cookbook-elasticsearch/commit/7bdaffc0a1b8e2ae17dc9ab961a468daf9825b98
        19:  # normal[:elasticsearch][:nginx][:ssl][:cert_file] = nil
        20:  # normal[:elasticsearch][:nginx][:ssl][:key_file] = nil
        21:  


       Running handlers:

       Running handlers complete

       [2015-05-01T17:10:42+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
       Chef Client failed. 0 resources updated in 0.969790492 seconds
       [2015-05-01T17:10:42+00:00] ERROR: Node attributes are read-only when you do not specify which precedence level to set. To set an attribute use code like `node.default["key"] = "value"'
       [2015-05-01T17:10:42+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

从我的研究来看,似乎在11号厨师和更新的厨师,你必须指定你的范围:

node.set[:elasticsearch][:custom_config] { 'foo' => 'bar' }
node.default[:elasticsearch][:custom_config] { 'foo' => 'bar' }

不幸的是,在我的default.rb中使用这些语法不起作用,因为foo和bar永远不会出现在我的配置中。

在包装器手册中覆盖节点值的正确方法是什么?

更新

我也尝试了以下语法而没有运气。

default['elasticsearch']['custom_config'] = {
  'indices.breaker.fielddata.limit' => '75%',
  'indices.fielddata.cache.size' => '65%'
}

实现此目的的代码位于:

https://github.com/elastic/cookbook-elasticsearch/blob/1e48dc99816e09ac96e2e850e70768fab6c82b89/templates/default/elasticsearch.yml.erb#L161-L163

**更新2 **

看来我的elasticsearch.yaml与github上的那个不同

我注意到我有一行#####安全####而github没有。另外github有##### custom ####而我的没有####。两者都是食谱的0.3.13版本。

http://pastebin.com/1nCjJY1d https://github.com/elastic/cookbook-elasticsearch/blob/v0.3.13/templates/default/elasticsearch.yml.erb

1 个答案:

答案 0 :(得分:0)

看起来它工作正常,但有2个弹性搜索文件。

/usr/local/elasticsearch/conf/elasticsearch.yml
/usr/local/etc/elasticsearch/elasticsearch.yml

第一个未使用,但第二个已更新。

Related github issue