我正在管理一些只能在一臺服務器上運行的腳本。我已經決定選出一個分配給給定角色的主機的最佳方法是通過搜索然後選擇返回的數組中的第一個元素。廚師 - 在測試廚房內搜索
像這樣:
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