Chef:修改现有资源

时间:2017-06-02 07:34:58

标签: chef

我当前的脚本如下:

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

1 个答案:

答案 0 :(得分:2)

因此第二个资源将真正成为一个独立的资源,而不是第一个资源的修改。在Chef 12中,它将克隆"第一个的状态,但在厨师13中,除了共享名称之外,两者完全不相关。

通用的修复方法是使用edit_resource,但由于您已在本地拥有资源对象,因此可以执行此操作:

es_conf.configuration.update({new: keys, go: here})