0
我設計了ruby中的代碼,它通過電子表格和代碼將我的xls部分轉換爲json。我需要將這個json上傳到廚師服務器上的數據包中。我使用ruby代碼的刀子命令並運行它。該JSON文件上傳到我的本地廚師回購正確的,但對於轉移到廚師服務器我收到此錯誤:從Ruby上傳數據包時出錯
ERROR: Chef::Exceptions::ValidationFailed: Data Bag Items must contain a Hash or Mash!
我已經驗證了JSON,ID相匹配的文件名,並嘗試使用[]括號在開始和結束,但不起作用。這是我的JSON的開始:
{ 「ID」: 「default_1」, 「Sr.No」: 「1」,...}
我的Ruby代碼要領如下所示:
require 'spreadsheet'
book = Spreadsheet.open('BI.xls')
sheet1 = book.worksheet('Sheet1')
.
.
.
cmd1 = "cd #{current_dir}/chef-repo"
cmd2 = "knife data_bag create TestDB" #tried knife data bag too
cmd4 = "knife data_bag from file TestDB default_1.json" #tried knife data bag too
upload = %x[#{cmd1} && #{cmd2} && #{cmd4} ]
puts "#{upload}"
命令knife node list
正確顯示節點。我是廚師和紅寶石新手,搜索並嘗試了很多東西,但沒有工作。
此外,如果我從廚師回購中運行完全相同的命令,它可以正常工作並將json上傳到數據包。 – user3264632 2015-01-21 09:35:09
可以肯定,你的json文件路徑是'[/] chef-repo/data_bags/TestDB/default_1.json'吧? – Tensibai 2015-01-21 10:27:22
是的,代碼文檔和.xls存儲在廚師回購 – user3264632 2015-01-22 05:31:11