从 Ruby 上传数据包时出错
Error in uploading Data bag from Ruby
我在 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”,....}
我的 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
正确显示节点。我是厨师的新手 ruby ,搜索并尝试了很多东西但没有用。
出人意料的解决了!我将所有文档存储在 chef-repo 中,并将一个文件分成两个,第一个将 .xls 转换为 json ,另一个执行 knife commands 。我现在 运行 来自 chef-repo 的 ruby 脚本和预期的工作。呸!
我在 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”,....}
我的 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
正确显示节点。我是厨师的新手 ruby ,搜索并尝试了很多东西但没有用。
出人意料的解决了!我将所有文档存储在 chef-repo 中,并将一个文件分成两个,第一个将 .xls 转换为 json ,另一个执行 knife commands 。我现在 运行 来自 chef-repo 的 ruby 脚本和预期的工作。呸!