首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Chef converge期间运行测试厨房时读取测试数据

如何在Chef converge期间运行测试厨房时读取测试数据
EN

Stack Overflow用户
提问于 2017-12-09 00:57:46
回答 1查看 95关注 0票数 0

我有一个方法,用单个条目更新Splunk /opt/splunkforwarder/etc/system/local/inputs.conf文件,需要将元数据添加到转发到索引器的事件中。

该元数据条目是已经安装在主机上的另一软件的配置文件中的九个字符的文本条目。

我有从这个文件中读取数据的代码,但是在运行测试厨房时,我不知道如何声明包含此信息的测试文件在我的.kitchen.yml文件中的位置。

我试着在我的存储库的根目录下创建一个目录,其中包含这个文件,我认为它会像角色、环境、cookbook目录那样被复制,所以我的.kitchen.yml包含一个条目:

代码语言:javascript
复制
    attributes: 
      splunk:
        sliceconf_path: test/slice.conf

但是我会得到一个错误,比如

代码语言:javascript
复制
Errno::ENOENT
       -------------
       No such file or directory @ rb_sysopen - test/slice.conf

我尝试了许多其他位置,但我仍然无法让它找到这个文件。如果我把它放在"files/test/slice.conf“中,它会被复制过来,但如果我声明路径,它仍然找不到它

代码语言:javascript
复制
sliceconf_path: files/test/slice.conf

或者(基于检查我用于Test-Kitchen的Docker镜像的目录结构)

代码语言:javascript
复制
cookbooks/cookbook-dh_rainbow_forwarders/files/test/slice.conf

我对如何让Chef/Test-Kitchen找到文件感到困惑。

-编辑

下面是我用来澄清的代码:

代码语言:javascript
复制
Recipe
slice_name = ''
ruby_block 'read_slice_conf' do
  block do
    slice_name = File.read("#{node['sliceconf_path']}").chomp
  end
end

# Update local input conf file with meta-data about slice.
 template '/opt/splunkforwarder/etc/system/local/inputs.conf' do
   source 'system_local_inputs.erb'
   owner 'nobody'
   group 'nobody'
  mode 0o600
  mode '0600'
   action :create
  variables(
    slice_decorators: slice_name
  )
 end

Template
[default]
host = <%= node['fqdn'] %>

_meta = slice::#{slice_name}

我在.kitchen.yml中设置了节点属性(节点‘’sliceconf_path‘)

EN

回答 1

Stack Overflow用户

发布于 2017-12-09 02:45:49

这听起来像是你在做类似IO.read(node['splunk']['sliceconf_path'])的事情,这意味着它必须是目标虚拟机上的绝对路径,它不会像你提供的那样知道Chef-y的事情。但是这个属性在社区splunk食谱中是不存在的,所以我不知道代码是如何工作的。如果你想让它自动理解cookbook_files,你需要为此编写代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47718876

复制
相关文章

相似问题

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