我使用的是包版本的数据库标签,例如
databags/
versions/
0.1.1
0.1.2
0.1.3
0.2.1
0.2.2
...当版本变得过时时,我想清除旧的数据包项。例如,有没有办法使用正则表达式批量删除数据包项?类似于:
knife data bag delete versions 0.1.*目前,我必须查询服务器并迭代结果,这需要多次刀子调用。
发布于 2014-12-15 23:25:51
为此,我将使用基于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似乎可以使用此命令删除数据库标签项目/食谱。
发布于 2014-12-16 02:21:06
可能是这样的:
knife exec -E 'api.get("/data/versions").select{|v| v.start_with?('0.1')}.each{|v| api.delete("/data/versions/#{v}")'
https://stackoverflow.com/questions/27485034
复制相似问题