我正在管理一些只能在一台服务器上运行的脚本。我已经决定选出一个分配给给定角色的主机的最佳方法是通过搜索然后选择返回的数组中的第一个元素。厨师 - 在测试厨房内搜索
像这样:
q = "roles:thumper"
arr = search(:node, q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }
# => ["1.example", "2.example"]
arr.first
# "1.example"
这种运作良好,在现实和厨师壳,但在那里我被对搜索命令返回一个HTTP 500在测试厨房困难。
================================================================================
Recipe Compile Error in /tmp/kitchen/cache/cookbooks/test/recipes/full.rb
================================================================================
Net::HTTPFatalError
-------------------
500 "Internal Server Error"
我正在与流浪的司机一起使用chef_zero。是否有任何特殊的事情可以让搜索功能在这种场景中起作用?
集成JSON:
{
"id": "thumper",
"environment": "food",
"run_list": ["role["thumper]"],
"automatic": {
"fqdn": "thumper",
"ipaddress": "10.10.10.10",
"roles": ["thumper"],
"environment": "food"
}
}
灯具的数据仅仅是调用相关的食谱
include_recipe 'test_helpers'
include_recipe 'role_thumper'
上面的示例代码略显过于简化,实际上它有一些外部排序和基本的完整性检查。好的电话,但。 与Kubernetes合作编排将在2周内成为我的一个大型黑客马拉松项目,我会在尝试将这种类型的服务整合到服务发现中。同时,尽管我一般希望能够在TK中使用搜索(不是部分搜索)。你在夹具节点数据中提到什么?我将把我的json放在原始问题中 –
您需要为测试实例提供一个Node对象作为JSON文件夹,就像您在那里一样,但它会在'test/integration/nodes'中进行,除非您覆盖Kitchen配置中的文件夹。作为创建过程的一部分,它将被发送到虚拟机。 – coderanger