我在数据包版本中使用数据库,例如
databags/
versions/
0.1.1
0.1.2
0.1.3
0.2.1
0.2.2
...
当版本过时时,我想清除旧的数据包项目。 有没有办法使用例如正则表达式批量删除数据包项目? 类似的东西:
knife data bag delete versions 0.1.*
目前,我必须查询服务器并迭代结果,这需要多次刀调用。
答案 0 :(得分:0)
我会为此使用基于repo的数据库。
如果您执行knife data bag from file 'folder'
,它将使用此文件夹中的项目(jsno文件)覆盖数据库。
Documentation here
因此,为文件系统上的每个项目创建一个只包含所需json的干净文件夹,并使用文件系统工具管理内容,这样就可以完成,并且您最终会得到一个命令。
如果您还没有在文件系统上拥有数据库,则可以为每个数据库创建一个目录,然后创建一个knife data bag show BAG ITEM -F json > databag_folder/item.json
来创建每个项目(循环显示一个刀数据包可能有帮助)
可能已经有了一种刀插件,但我找不到它。
快速搜索后编辑:http://docs.chef.io/chef/knife.html#id133似乎此命令可以采用模式删除数据库项目/烹饪书。
答案 1 :(得分:0)
也许是这样的:
knife exec -E 'api.get("/data/versions").select{|v| v.start_with?('0.1')}.each{|v| api.delete("/data/versions/#{v}")'