使用Test Kitchen

时间:2017-07-07 16:39:48

标签: chef

在相关的post中,我询问了如何从Chef查询创建逗号分隔的主机列表。但问题是我使用的是没有使用Chef服务器的测试厨房,这就是我的查询没有返回任何主机的原因。

我的问题是,您如何测试依赖于测试厨房中的Chef查询的食谱?将数据预加载到文件或沿着这些行的某些内容不会暴露刀查询本身中的任何错误。是否有一个busser可以让我对Chef Server运行查询?

更新:以下是支持我从Chef查询得到的奇怪结果的代码。

配方:

# Create output conf file
indexers = search("node", "role:#{node['forwarder']['indexer_role']}")

template '/opt/splunkforwarder/etc/system/local/outputs.conf' do
  source "system_local_outputs.erb"
  owner 'nobody'
  group 'nobody'
  mode 0600
  action :create
variables(
  :indexers  => indexers
)
end

模板ERB

[tcpout]
defaultGroup = default-autolb-group

[tcpout:default-autolb-group]
disabled = false
server = <%= @indexers.map {|n| "#{n}:5501" }.join(",") %>

属性/ default.rb

default['forwarder']['indexer_role'] = 'splunk_indexer'

Docker实例中的命令行查询,用于测试是否正确配置了转发器

sudo /opt/splunkforwarder/bin/splunk list forward-server -auth admin:<password>

Active forwards:
None
Configured but inactive forwards:
node[splunk-001-indexer.example.com]:5501
node[splunk-002-indexer.example.com]:5501
node[splunk-003-indexer.example.com]:5501
node[splunk-004-indexer.example.com]:5501
node[splunk-005-indexer.example.com]:5501
node[splunk-006-indexer.example.com]:5501
node[splunk-007-indexer.example.com]:5501
node[splunk-008-indexer.example.com]:5501
node[splunk-009-indexer.example.com]:5501
node[splunk-010-indexer.example.com]:5501
node[splunk-011-indexer.example.com]:5501
node[splunk-012-indexer.example.com]:5501

最后,outputs.conf文件的内容

sudo cat /opt/splunkforwarder/etc/system/local/outputs.conf
[tcpout]
defaultGroup = default-autolb-group

[tcpout:default-autolb-group]
disabled = false
server = node[dspe-splunk-001-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-002.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-003-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-004-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-005-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-006-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-007-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-008.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-009-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-010-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-011-indexer.pbp.gq1.yahoo.com]:5501,node[dspe-splunk-012-indexer.pbp.gq1.yahoo.com]:5501

2 个答案:

答案 0 :(得分:1)

您可以通过将JSON文件放在test/integration/nodes/下面来模拟搜索数据(针对节点):

example file如下所示:

{
  "id":       "testhost",
  "name":     "testhost.example.com",
  "chef_type": "node",
  "json_class": "Chef::Node",
  "run_list": [],
  "chef_environment": "production",
  "automatic": {
    "fqdn": "testhost.example.com",
    "ip": "127.0.0.1"
  }
}

答案 1 :(得分:0)

实际上,Fauxhai提供了从Chef服务器收集数据的能力,而不是模拟数据。我偶然发现了entry

  

或者,如果您不想模拟数据,Fauxhai提供了一种用于收集&#34;真实&#34;来自远程服务器或本地文件的Ohai数据。也许您想针对池中前置服务器的完全复制环境进行测试。只需传入url选项而不是平台:

     

fetch方法支持与Net-SSH命令相同的所有选项,例如:user,:password,:key_file等。

     

fetch方法会将JSON文件缓存在本地计算机上的临时路径中。与像VCR这样的宝石类似,这允许Fauxhai使用缓存副本,使您的测试套件运行得更快。您可以通过传递:force_cache_miss =&gt;来强制缓存未命中。获取初始值设定项的true选项。由于这是真实数据,因此可能存在安全问题。相应地保护您的笔记本电脑。