从Ruby上传Data bag时出错

时间:2015-01-21 08:49:49

标签: ruby json chef

我在ruby中设计了代码,它通过电子表格和代码将xls转换为json。我需要将这个json上传到chef-server上的数据包。我正在使用ruby代码中的knife命令并运行它。 json文件正确上传到我当地的chef-repo,但是为了转移到chef-server,我收到了这个错误:

ERROR: Chef::Exceptions::ValidationFailed: Data Bag Items must contain a Hash or Mash!

我已经验证了json,id匹配文件的名称,并尝试在开始和结束时使用[]括号,但不起作用。这是我的json的开始:

{   " id":" default_1",   " Sr.No" :" 1",....}

我的红宝石代码要点如下:

 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正确显示节点。我是厨师和红宝石的新手,搜索并尝试了很多东西但没有工作。

1 个答案:

答案 0 :(得分:0)

令人惊讶的是整理出来了!我将所有文档存储在chef-repo中,并将一个文件分成两个,第一个将.xls转换为json,另一个执行刀命令。我现在运行chef-repo的ruby脚本和正常工作。呼!