首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与厨师一起使用LWRP?

如何与厨师一起使用LWRP?
EN

Stack Overflow用户
提问于 2015-03-11 21:37:24
回答 1查看 1.5K关注 0票数 1

我是新来的厨师,我正试图设置一个包装食谱,以管理逻辑存储。我正在包装烹饪书使用LWRP。

如何使用LWRP管理配置文件?

这是到目前为止我有的包装食谱。

食谱/default.rb

代码语言:javascript
复制
include_recipe 'apt::default'
include_recipe 'java::default'
include_recipe 'logstash::server'

属性/default.rb

代码语言:javascript
复制
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

伯克文件

代码语言:javascript
复制
source "https://supermarket.chef.io"

metadata

cookbook 'logstash', git: 'https://github.com/lusis/chef-logstash.git'

根据文档,有一个在.kitchen.yml中使用LWRP的例子,但我不确定如何使用它。

我该把LWRP的定义放在哪里?

LWRP在包装食谱里是什么样子的?

更新

以下是我尝试过的:

recipe/default.rb中,我添加了以下内容

代码语言:javascript
复制
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内部,我有以下内容

代码语言:javascript
复制
foobar

然而,当我运行一个厨房会聚时,文件不会被创建。

Update2

根据irc通道中的cheeseplus,您应该能够使用如下的LWRP:

代码语言:javascript
复制
default['logstash']['instance_default']['config_templates_cookbook'] = 'config/foobar_output_elasticsearch.conf.erb'

https://github.com/lusis/chef-logstash/issues/367

不幸的是它不起作用了。

Update3

我还尝试在我的default.rb中设置属性,如下所示:

代码语言:javascript
复制
default['logstash']['instance_default']['config_templates_cookbook'] = 'My-Wrapper-Cookobook'
default['logstash']['instance_default']['config_templates']['foobar'] = 'config/foobar_output_elasticsearch.conf.erb'

Update4

我还尝试直接设置资源中的参数,但没有运气。

代码语言:javascript
复制
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

看看这个例子,我也尝试过以下语法。

代码语言:javascript
复制
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'
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-11 23:36:30

知道了,语法是正确的和有效的,但是测试厨房文件没有加载正确的食谱。

这是最后的工作输出

属性/default.rb

代码语言:javascript
复制
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

代码语言:javascript
复制
include_recipe 'apt'
include_recipe 'java'
include_recipe 'logstash::server'

.kitchen.yml

代码语言:javascript
复制
---
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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28997870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档