Ruby 如何修改节点';shell脚本中的属性?

Ruby 如何修改节点';shell脚本中的属性?,ruby,chef-infra,knife,Ruby,Chef Infra,Knife,我一直在使用knife node edit[node_name]编辑节点,但是,我想节省一些时间,并编写一个脚本,自动将属性集添加到许多节点清单中 我想以某种方式将以下内容添加到bash脚本的“normal”:{}部分 "borg": { "client": { "backup_server_override": "10.140.4.141" } }, 是否有一个命令或方法可以在不使用刀节点编辑和避免使用交互式编辑器的情况下执行此操作?检查刀执行和节点。transform,可能

我一直在使用knife node edit[node_name]编辑节点,但是,我想节省一些时间,并编写一个脚本,自动将属性集添加到许多节点清单中

我想以某种方式将以下内容添加到bash脚本的“normal”:{}部分

"borg": {
  "client": {
    "backup_server_override": "10.140.4.141"
  }
},

是否有一个命令或方法可以在不使用刀节点编辑和避免使用交互式编辑器的情况下执行此操作?

检查
刀执行
节点。transform
,可能会执行您想要的操作:

knife exec -E 'nodes.transform ("*:*") {|n| n.normal["whatever"] = "something" }'

警告:
“*:*”
将捕获所有节点并对其应用转换函数。小心。

检查
刀执行
节点。转换
,可能会执行您想要的操作:

knife exec -E 'nodes.transform ("*:*") {|n| n.normal["whatever"] = "something" }'

警告:
“*:*”
将捕获所有节点并对其应用转换函数。小心。

这很有效。我该如何为[“whatever”]添加属性,我想这样做:“normal”:{“whatever”:{“more”:{“apple”:“orange”}}}}}
n.normal['whatever']['more']['apple']='orange'
,就像在烹饪书的代码中一样。我搞砸了,想出了一些有用的东西:/usr/local/bin/knife-exec-E'nodes.transform(“*:some\u node”){124; n{124; n.normal_attrs[“whater”]={“test1”=>{“test1”=>“123456”};}这很好用。我如何向[“whater”]添加属性,我想这样做:{“whater”:{“more”:{“apple”:“orange”}}
n.normal['whater'['more']['apple'='orange'
,就像在烹饪书代码中一样,我搞乱了,想出了一些可行的方法:/usr/local/bin/knife exec-E'nodes.transform(“*:some_node”){n | n.normal_attrs[“whatever”]={“test1”=>{“test1”=>“123456”};};