【问题标题】:Error in uploading Data bag from Ruby从 Ruby 上传数据包时出错
【发布时间】:2015-01-21 08:49:49
【问题描述】:

我在 ruby​​ 中设计了代码,它通过电子表格和代码将我的 xls 部分转换为 json。我需要将此 json 上传到我在 chef-server 上的数据包中。我正在使用来自 ruby​​ 代码的刀命令并运行它。 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 正确显示节点。我是 chef 和 ruby​​ 的新手,搜索并尝试了很多东西但没有用。

【问题讨论】:

  • 另外,如果我从我的 chef-repo 运行完全相同的命令,它会正常工作并将 json 上传到数据包。
  • 可以肯定的是,你的json文件路径是[...]/chef-repo/data_bags/TestDB/default_1.json吧?
  • 是的,代码文档和 .xls 存储在 chef-repo 中

标签: ruby json chef-infra


【解决方案1】:

出乎意料地解决了!我将所有文档存储在 chef-repo 中,并将一个文件分成两个,第一个将 .xls 转换为 json ,另一个执行刀命令。我现在运行来自 chef-repo 的 ruby​​ 脚本和预期的工作。呸!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多