Chef infra 如何批量编辑数据包

Chef infra 如何批量编辑数据包,chef-infra,databags,Chef Infra,Databags,我有一个包含40多个项目的数据包,需要为其中大多数项目添加某些参数 是否有方法编辑所有数据包项目,例如使用刀?到目前为止,我所能看到的只是在我的编辑器中打开每个项目。您可以使用cycle遍历所有项目,并通过调用 for item in <item1> <item2> <item3> ; do knife data bag show <data_bag> $item -Fj > my_data_bag/$item.json done 用于

我有一个包含40多个项目的数据包,需要为其中大多数项目添加某些参数


是否有方法编辑所有数据包项目,例如使用刀?到目前为止,我所能看到的只是在我的编辑器中打开每个项目。

您可以使用cycle遍历所有项目,并通过调用

for item in <item1> <item2> <item3> ; do
  knife data bag show <data_bag> $item -Fj > my_data_bag/$item.json
done
用于中的项目;做
刀子数据包显示$item-Fj>my_data_bag/$item.json
完成
然后通过复制/粘贴或某些宏将所需参数添加到每个json文件中。并通过调用以下命令更新chef server上的行李项目:

knife data bag from file <data_bag> my_data_bag/*.json
文件my_data_bag/*.json中的刀数据包
您可能想使用
-Fj
选项生成JSON数据,因为默认输出格式为YAML。谢谢,将其添加到了答案中。此外,Chef 11还加入了刀子精华,因此您可以执行以下操作:
刀子下载数据包/*
然后编辑每个数据包JSON文件和
刀子上传数据包/*
。此处参考: