0

我正在为包版本使用数据包,例如

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

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

knife data bag delete versions 0.1.*

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

4

2 回答 2

0

我会为此使用基于 repo 的数据包。

如果您这样做knife data bag from file 'folder',它将用此文件夹中的项目(jsno 文件)覆盖数据包。 文档在这里

因此,为文件系统上的每个项目创建一个干净的文件夹,其中只包含所需的 json,并使用文件系统工具管理内容就可以了,您最终会得到一个命令。

如果您还没有文件系统上的数据包,您可以为每个数据包创建一个目录,然后knife data bag show BAG ITEM -F json > databag_folder/item.json创建每个项目(循环显示刀数据包可能会有所帮助)

可能已经有一种刀插件,但我找不到。

快速搜索后编辑:http: //docs.chef.io/chef/knife.html#id133似乎此命令可以采用一种模式来删除数据包项目/食谱。

于 2014-12-15T15:25:50.523 回答
0

也许是这样的:

knife exec -E 'api.get("/data/versions").select{|v| v.start_with?('0.1')}.each{|v| api.delete("/data/versions/#{v}")'

于 2014-12-15T18:21:06.193 回答