Automation

為什麼“從文件中取刀數據包”在 Chef 伺服器上找不到現有的 json 文件?

  • February 3, 2015

概括:

我遇到了“文件中的刀數據包”的問題,其中刀無法辨識從遠端 git 儲存庫中提取的 .json 數據封包件。

背景:

我目前正在嘗試從廚師單獨使用過渡到廚師伺服器,同時使用我們遠端 git 儲存庫中的食譜、數據包和其他廚師資訊。

我目前已經下載了我們的 git repo 的副本,並在 knife.rb 中設置了食譜路徑和數據包路徑。我還載入了食譜,進行了調整等。

細節:

當嘗試通過執行“從文件文件夾文件添加刀具數據包”來載入我們的 .json 數據包時,它看起來好像可以工作,直到我執行“刀具數據包列表”並且它出現空白。所以我決定嘗試在最後添加編輯選項,看看正在載入什麼,如果是的話。這是我得到的錯誤:

knife data bag from file local_settings test.json -e nano
ERROR: Could not find or open file 'test.json' in current directory or in 'data_bags/local_settings/test.json'

數據封包件確實存在於正確的位置,在經過測試的工作 json 文件中。我有時也會收到一條錯誤消息,說“無法打開數據包“local_settings”。

我顯然希望將數據包路徑保留在適當的 git repo 文件夾中,以便能夠在更集中的位置(我們的 git repo,而不是 chef 伺服器)跟踪更改。

任何朝著正確方向的解決方案、建議或指示都將受到讚賞。

我不認為使用-e nano選項是有效的knife data bag from file(儘管命令行幫助另有暗示),但它應該被忽略。該錯誤意味著刀找不到您指定的json文件。當您說該項目位於正確的位置時,它到底在哪裡?請注意,knife 將相對於您目前的目錄,而不是相對於您的 chef-repo。

解決了該問題後,您將遇到另一個問題-您需要先創建數據包,然後才能向其中添加項目。它應該在創建後立即顯示在knife data bag list輸出中:

$ knife data bag create local_settings
Created data_bag[local_settings]
$ knife data bag list
 local_settings

“刀數據包”的文件可以在這裡找到:http ://wiki.opscode.com/display/chef/Managing+Data+Bags+With+Knife

引用自:https://serverfault.com/questions/439529