1

我有一个 search_query 的 chef_vault role:myrole

我希望厨师服务器定期刷新保险库的搜索查询,添加新节点并删除不再应用角色的任何节点。

为了测试这一点,将角色应用于节点并运行:

knife vault update mevault item1 -S "role:myrole" --mode client

该节点出现在保管库客户端列表中。然后我从节点中删除了该角色并再次运行该命令,但该节点仍出现在保管库客户端列表中。我还尝试使用 --clean 开关来执行此命令,但这并没有从客户端列表中删除该节点,它似乎不适用于刷新命令。

带有 clean 开关的保管库更新命令有效,但我必须将搜索查询硬编码到其中,我只想刷新已应用于保管库项目的搜索查询。

4

2 回答 2

2

您必须运行knife rotate,这将更新共享密钥并删除所有与搜索查询不匹配的主机:

knife vault rotate keys VAULT ITEM

秘密本身是使用共享密钥加密的,所有节点都可以通过ITEM_keys数据包项对其进行解密。因此,这个密钥需要轮换。

于 2016-07-17T18:38:52.383 回答
1

好的,所以我认为我有一个可能的解决方案,但我不喜欢它。

clean 开关在刷新时不起作用,当带有 --clean 的更新命令删除节点时,如果不对命令中的查询进行硬编码,它就不会添加新节点(我只想重新运行配置保管库的查询)所以这种做我想要的:

knife vault update vault123 item1 --mode client --clean
knife vault refresh vault123 item1 --mode client

尽管吹掉整个客户列表并重新添加它们,我并不害怕,但我也担心这对许多节点来说有多安全。我可以安排这个并完成它,但我认为这可能是愚蠢的。

或者,也许我可以有一个脚本将搜索查询拉出保管库并使用它来运行保管库更新。

有人可以建议一个更好的方法...

于 2016-07-17T19:21:12.450 回答