我当前的脚本如下:
es_conf = elasticsearch_configure 'elasticsearch' do
allocated_memory '512m'
configuration ({
'http.port' => port,
'cluster.name' => cluster_name,
'node.name' => node_name,
'bootstrap.memory_lock' => false,
'discovery.zen.minimum_master_nodes' => 1
})
end
es_conf.path_data data_location if data_location
elasticsearch_plugin 'repository-s3' do
action :install
end
elasticsearch_plugin 'x-pack' do
action :install
end
elasticsearch_configure 'elasticsearch' do
configuration ({
'http.port' => port,
'cluster.name' => cluster_name,
'node.name' => node_name,
'bootstrap.memory_lock' => false,
'discovery.zen.minimum_master_nodes' => 1,
'xpack.monitoring.enabled' => true,
'xpack.graph.enabled' => false,
'xpack.watcher.enabled' => true
})
end
它目前正在为我工作(我的意思是它按我的意愿配置elasticsearch)。尽管如此,我知道它并不是那么好。我的意思是,我正在使用elasticsearch_configure
两次。问题是我首先需要配置elasticsearch,然后我需要安装x-pack
,然后使用特定的x-pack
值配置elasticsearch。
为了更优雅地做任何想法?
确切地说,我的意思是我应该如何更改es_conf
?
答案 0 :(得分:2)
因此第二个资源将真正成为一个独立的资源,而不是第一个资源的修改。在Chef 12中,它将克隆"第一个的状态,但在厨师13中,除了共享名称之外,两者完全不相关。
通用的修复方法是使用edit_resource
,但由于您已在本地拥有资源对象,因此可以执行此操作:
es_conf.configuration.update({new: keys, go: here})