我是厨师的新手,我正在尝试设置一个包装器食谱来管理logstash。 cookbook I am wrapping使用LWRP。
如何使用LWRP管理配置文件?
这是我到目前为止的包装食谱
配方/ default.rb
include_recipe 'apt::default'
include_recipe 'java::default'
include_recipe 'logstash::server'
属性/ default.rb
default['logstash']['instance_default']['elasticsearch_cluster'] = 'example-elasticsearch'
default['logstash']['instance_default']['elasticsearch_ip'] = 'elasticsearch01.example.com'
default['logstash']['instance_default']['elasticsearch_port'] = '9200'
default['logstash']['instance_default']['elasticsearch_embedded'] = false
Berksfile
source "https://supermarket.chef.io"
metadata
cookbook 'logstash', git: 'https://github.com/lusis/chef-logstash.git'
根据文档,有一个在.kitchen.yml中使用LWRP的示例,但我不确定如何使用它。
我在哪里放置LWRP定义?
LWRP在包装菜谱中的样子是什么?
更新
以下是我的尝试:
在recipe/default.rb
我添加了以下内容
include_recipe 'apt::default'
include_recipe 'java::default'
include_recipe 'logstash::server'
logstash_config 'config/foobar_output_elasticsearch.conf.erb' do
action [:create]
notifies :restart, "logstash_service[#{name}]"
end
然后在templates/default/config/foobar_output_elasticsearch.conf.erb
内我有以下
foobar
然而,当我运行厨房汇聚时,文件未创建
UPDATE2
根据irc频道中的cheeseplus,你应该可以像这样使用LWRP:
default['logstash']['instance_default']['config_templates_cookbook'] = 'config/foobar_output_elasticsearch.conf.erb'
https://github.com/lusis/chef-logstash/issues/367
不幸的是它不起作用。
UPDATE3
我也尝试过设置default.rb中的属性,如下所示:
default['logstash']['instance_default']['config_templates_cookbook'] = 'My-Wrapper-Cookobook'
default['logstash']['instance_default']['config_templates']['foobar'] = 'config/foobar_output_elasticsearch.conf.erb'
UPDATE4
我也尝试过直接在资源中设置参数而没有运气。
logstash_config 'foobar' do
templates_cookbook 'MY-Wrapper-Cookbook'
templates 'config/foobar_output_elasticsearch.conf.erb'
action [:create]
notifies :restart, "logstash_service[#{name}]"
end
Update5
Looking at this example,我也尝试了以下语法。
default['logstash']['instance_default']['config_templates'] = {
'input_redis' => 'config/input_redis.conf.erb',
'filter_syslog' => 'config/filter_syslog.conf.erb',
'output_elasticsearch' => 'config/output_elasticsearch.conf.erb',
'foobar' => 'config/foobar_output_elasticsearch.conf.erb'
}
答案 0 :(得分:1)
想出来,语法正确且有效,但是测试厨房文件没有加载正确的烹饪书。
这是最终的工作输出
属性/ default.rb
default['logstash']['instance_default']['elasticsearch_cluster'] = 'foobar-elasticsearch'
default['logstash']['instance_default']['elasticsearch_ip'] = 'elasticsearch01.example.com'
default['logstash']['instance_default']['elasticsearch_port'] = '9200'
default['logstash']['instance_default']['elasticsearch_embedded'] = false
default['logstash']['instance_default']['config_templates_cookbook'] = 'foobar-Logstash-Indexer'
default['logstash']['instance_default']['config_templates']['foobar'] = 'config/foobar_output_elasticsearch.conf.erb'
配方/ default.rb
include_recipe 'apt'
include_recipe 'java'
include_recipe 'logstash::server'
.kitchen.yml
---
driver:
name: vagrant
driver_config:
require_chef_omnibus: true
use_vagrant_berkshelf_plugin: true
customize:
memory: 512
cpus: 1
provisioner:
name: chef_solo
platforms:
- name: ubuntu-12.04
- name: centos-5.10
- name: centos-6.5
- name: centos-7.0
- name: fedora-20
- name: debian-7.6
suites:
- name: server
run_list:
- recipe[apt::default]
- recipe[java::default]
# - recipe[logstash::server]
- recipe[foobar-Logstash-Indexer::default]