我在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
正确显示节点。我是厨师和红宝石的新手,搜索并尝试了很多东西但没有工作。
答案 0 :(得分:0)
令人惊讶的是整理出来了!我将所有文档存储在chef-repo中,并将一个文件分成两个,第一个将.xls转换为json,另一个执行刀命令。我现在运行chef-repo的ruby脚本和正常工作。呼!