我正在为包版本使用数据包,例如
databags/
versions/
0.1.1
0.1.2
0.1.3
0.2.1
0.2.2
...
当版本过时时,我想清除旧的数据包项。有没有办法使用例如正则表达式批量删除数据包项目?就像是:
knife data bag delete versions 0.1.*
目前,我必须查询服务器并迭代结果,这需要多次调用。
我正在为包版本使用数据包,例如
databags/
versions/
0.1.1
0.1.2
0.1.3
0.2.1
0.2.2
...
当版本过时时,我想清除旧的数据包项。有没有办法使用例如正则表达式批量删除数据包项目?就像是:
knife data bag delete versions 0.1.*
目前,我必须查询服务器并迭代结果,这需要多次调用。
我会为此使用基于 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似乎此命令可以采用一种模式来删除数据包项目/食谱。
也许是这样的:
knife exec -E 'api.get("/data/versions").select{|v| v.start_with?('0.1')}.each{|v| api.delete("/data/versions/#{v}")'