批量删除厨师服务器上的数据库?

时间:2014-12-15 13:19:09

标签: chef databags

我在数据包版本中使用数据库,例如

databags/
  versions/
    0.1.1
    0.1.2
    0.1.3
    0.2.1
    0.2.2
    ...

当版本过时时,我想清除旧的数据包项目。 有没有办法使用例如正则表达式批量删除数据包项目? 类似的东西:

knife data bag delete versions 0.1.*

目前,我必须查询服务器并迭代结果,这需要多次刀调用。

2 个答案:

答案 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}")'