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