【发布时间】:2017-12-08 16:57:46
【问题描述】:
我有一个配方,可以更新 Splunk /opt/splunkforwarder/etc/system/local/inputs.conf 文件,其中包含需要添加到正在转发到索引器的事件中的元数据的单个条目。
此元数据条目是主机上已安装的另一软件的配置文件中的九个字符文本条目。
我有从这个文件中读取数据的代码,但是在运行 test-kitchen 时,我不知道如何声明包含这些信息的测试文件在我的 .kitchen.yml 文件中的位置。
我尝试在我的存储库的根目录中创建一个包含此文件的目录,认为它会像角色、环境、食谱目录一样被复制,所以我的 .kitchen.yml 包含一个条目:
attributes:
splunk:
sliceconf_path: test/slice.conf
但是我会收到类似的错误
Errno::ENOENT
-------------
No such file or directory @ rb_sysopen - test/slice.conf
我尝试了许多其他位置,但仍然无法找到此文件。如果我把它放在“files/test/slice.conf”中它会被复制,但是如果我声明路径它仍然找不到它
sliceconf_path: files/test/slice.conf
或(基于检查我用于测试厨房的 Docker 映像的目录结构)
cookbooks/cookbook-dh_rainbow_forwarders/files/test/slice.conf
我不知道如何让 Chef/Test-Kitchen 找到该文件。
----------------编辑-------------------
这是我用来澄清的代码:
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 中设置了节点属性 (node['sliceconf_path'])
【问题讨论】:
标签: chef-infra splunk test-kitchen