我有一个chef_vault,其search_query为role:myrole
。
我希望厨师服务器定期刷新保险库的搜索查询,添加新节点并删除任何不再应用该角色的节点。
为了对此进行测试,将角色应用于节点并运行:
knife vault update mevault item1 -S "role:myrole" --mode client
该节点出现在保管库客户端列表中。 然后,我从节点中删除了该角色并再次运行该命令,但该节点仍显示在保管库客户端列表中。我也尝试使用--clean开关执行此命令,但是没有从客户端列表中删除该节点,它似乎对刷新命令不起作用。
带有干净开关的保险库更新命令有效,但我必须将搜索查询硬编码到其中,我只想刷新已应用于保险库项目的搜索查询。
答案 0 :(得分:1)
您必须运行knife rotate
,这将更新共享密钥并删除与搜索查询不匹配的所有主机:
knife vault rotate keys VAULT ITEM
秘密本身使用共享密钥加密,所有节点都可以通过ITEM_keys
数据包项解密。因此,需要旋转此键。
答案 1 :(得分:1)
好的,我想我有一个可能的解决方案,但我不喜欢它。
clean开关在刷新时不起作用,而使用--clean的update命令删除节点时,如果没有在命令中对查询进行硬编码,它将不会添加新的命令(我只想重新运行查询保险库已配置()所以这样做我想要的:
knife vault update vault123 item1 --mode client --clean
knife vault refresh vault123 item1 --mode client
虽然要吹掉整个客户列表并重新添加它们,但我有点害怕,我也担心这对许多节点来说有多安全。我可以安排这个并完成它,但我认为这可能是愚蠢的。
或许我可以让脚本将搜索查询从保险库中拉出来并使用它来运行保险库更新。
有人可以提出更好的建议......