
概括:
我遇到了「knife data bag from file」的問題,其中 knife 無法識別從遠端 git 儲存庫中拉下的 .json 封包檔案。
背景:
我目前正在嘗試從廚師單獨使用過渡到廚師伺服器,同時使用遠端 git 儲存庫中的食譜、資料包和其他廚師資訊。
我目前已經下載了 git 儲存庫的副本,並在 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,而不是廚師伺服器)中的變更。
任何正確方向的解決方案、建議或指示都值得讚賞。
答案1
我認為使用-e nano
選項是無效的knife data bag from file
(儘管命令列幫助暗示了其他情況),但應該忽略它。該錯誤意味著 Knife 找不到您指定的 json 檔案。當你說該物品位於正確位置時,它到底在哪裡?請注意,knife 將相對於您當前的目錄而不是您的廚師存儲庫進行查找。
解決這個問題後,您將遇到另一個問題 - 您需要先建立資料包,然後才能在其中新增項目。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
答案2
我照做了
knife data bag list
,結果顯示為空白。
這意味著數據包local_settings
尚未創建。
因此,應該創建它:
$> knife data bag create local_settings
Created data_bag[local_settings]
那麼如果伺服器的資料包它應該出現在列表中:
$> knife data bag list
local_settings
然後就可以上傳{{test.json}}封包檔了。
另外,這裡有一些關於實際發生的事情的很好的解釋:[CHEF 維基上的連結]。