Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 使用测试厨房在食谱中测试厨师搜索查询_Chef Infra - Fatal编程技术网

Chef infra 使用测试厨房在食谱中测试厨师搜索查询

Chef infra 使用测试厨房在食谱中测试厨师搜索查询,chef-infra,Chef Infra,在一篇相关的文章中,我问到如何从Chef查询中创建一个以逗号分隔的主机列表。但问题是我使用的是TestKitchen,它不使用Chef服务器,所以我的查询没有返回任何主机 我的问题是,如何在测试厨房中测试依赖于厨师查询的食谱?将数据预加载到文件或类似文件中不会暴露查询本身的任何错误。是否有允许我对Chef服务器运行查询的busser 更新:下面是支持我从Chef查询中得到的奇怪结果的代码 配方: # Create output conf file indexers = search("node"

在一篇相关的文章中,我问到如何从Chef查询中创建一个以逗号分隔的主机列表。但问题是我使用的是TestKitchen,它不使用Chef服务器,所以我的查询没有返回任何主机

我的问题是,如何在测试厨房中测试依赖于厨师查询的食谱?将数据预加载到文件或类似文件中不会暴露查询本身的任何错误。是否有允许我对Chef服务器运行查询的busser

更新:下面是支持我从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(",") %>
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
您可以通过将JSON文件放在
test/integration/nodes/
下面来模拟搜索数据(针对节点):

一份报告如下:

{
  "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"
  }
}
您可以通过将JSON文件放在
test/integration/nodes/
下面来模拟搜索数据(针对节点):

一份报告如下:

{
  "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"
  }
}

事实证明,Fauxhai提供了从Chef服务器收集数据的能力,而不是模拟数据。我只是偶然发现:

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

fetch方法支持与netssh命令相同的所有选项,例如:user、:password、:key_file等

fetch方法将JSON文件缓存在本地计算机上的临时路径中。与VCR等gems类似,这允许Fauxhai使用缓存副本,使测试套件运行更快。通过将:force\u cache\u miss=>true选项传递给fetch初始值设定项,可以选择强制缓存未命中。因为这是真实数据,所以可能存在安全问题。相应地保护你的笔记本电脑


事实证明,Fauxhai提供了从Chef服务器收集数据的能力,而不是模拟数据。我只是偶然发现:

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

fetch方法支持与netssh命令相同的所有选项,例如:user、:password、:key_file等

fetch方法将JSON文件缓存在本地计算机上的临时路径中。与VCR等gems类似,这允许Fauxhai使用缓存副本,使测试套件运行更快。通过将:force\u cache\u miss=>true选项传递给fetch初始值设定项,可以选择强制缓存未命中。因为这是真实数据,所以可能存在安全问题。相应地保护你的笔记本电脑


这些不是“刀子查询”,只是在Chef中搜索<代码>刀只是工作站上它的接口。你完全正确。我已经纠正了,谢谢。肌肉记忆习惯。这些不是“刀子查询”,只是在厨师中搜索<代码>刀只是工作站上它的接口。你完全正确。我已经纠正了,谢谢。肌肉记忆习惯。对,我知道这个方法。但是我并没有像在生产环境中那样测试代码,对吗?难道不应该有某种方法从测试厨房内部调用Chef服务器吗?实际上,这些数据是由Chef solo/zero(服务器部分)拾取的,Chef客户端调用此API。使用test kitchen,您不需要对“真正”的厨师服务器进行测试。当然,这是个好主意。您可以模拟生产环境中的数据。我创建了一个类似于您在测试中所演示的文件,但与在生产环境中使用相同查询时的结果相比,结果似乎很奇怪
已配置但不活动的转发:节点[splunk-001-indexer.example.com]:8888
outputs.conf文件包含这样一个条目,但是我不明白为什么
node[]
会作为查询的结果被包括进来。code或者它没有发生。对,我知道这个方法。但是我并没有像在生产环境中那样测试代码,对吗?难道不应该有某种方法从测试厨房内部调用Chef服务器吗?实际上,这些数据是由Chef solo/zero(服务器部分)拾取的,Chef客户端调用此API。使用test kitchen,您不需要对“真正”的厨师服务器进行测试。当然,这是个好主意。您可以模拟生产环境中的数据。我创建了一个类似于您在测试中所演示的文件,但与在生产环境中使用相同查询时的结果相比,结果似乎很奇怪
已配置但不活动的转发:节点[splunk-001-indexer.example.com]:8888
outputs.conf文件包含这样一个条目,但我不明白为什么
node[]
会作为查询的结果包含进来。code或者它没有发生。
{
  "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"
  }
}