Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 如何刷新厨师库';是否删除与搜索查询不匹配的节点?_Chef Infra_Chef Recipe_Knife_Databags - Fatal编程技术网

Chef infra 如何刷新厨师库';是否删除与搜索查询不匹配的节点?

Chef infra 如何刷新厨师库';是否删除与搜索查询不匹配的节点?,chef-infra,chef-recipe,knife,databags,Chef Infra,Chef Recipe,Knife,Databags,我有一个厨师库,搜索查询为role:myrole 我希望chef服务器定期刷新vault的搜索查询,添加新节点并删除不再应用角色的任何节点 要测试此操作,请将角色应用于节点并运行: knife vault update mevault item1 -S "role:myrole" --mode client 该节点出现在Vault客户端列表中。 然后,我从节点中删除了该角色,并再次运行了该命令,但该节点仍显示在Vault客户端列表中。我还使用--clean开关尝试了这个命令,但这并没有从客户机

我有一个厨师库,搜索查询为
role:myrole

我希望chef服务器定期刷新vault的搜索查询,添加新节点并删除不再应用角色的任何节点

要测试此操作,请将角色应用于节点并运行:

knife vault update mevault item1 -S "role:myrole" --mode client
该节点出现在Vault客户端列表中。 然后,我从节点中删除了该角色,并再次运行了该命令,但该节点仍显示在Vault客户端列表中。我还使用--clean开关尝试了这个命令,但这并没有从客户机列表中删除节点,刷新命令似乎不起作用


带有clean开关的vault update命令可以工作,但我必须将搜索查询硬编码到该命令中,我只想刷新已应用于vault项的搜索查询。

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

knife vault rotate keys VAULT ITEM

秘密本身使用共享密钥加密,所有节点都可以通过
项_密钥
数据包项解密。因此,这个键需要旋转。

好的,我想我有一个可能的解决方案,但我不喜欢它

clean开关在刷新时不起作用,而带有--clean的update命令删除节点时,如果不在命令中对查询进行硬编码,它将不会添加新节点(我只想重新运行vault配置时使用的查询),因此这类操作符合我的要求:

knife vault update vault123 item1 --mode client --clean
knife vault refresh vault123 item1 --mode client
虽然我并不害怕吹走整个客户机列表并重新添加它们,但我也担心这对许多节点来说有多安全。我可以安排这件事并完成它,但我认为这可能是愚蠢的

或者我可以让脚本将搜索查询从vault中拉出,并使用它运行vault更新


这是一个更好的方法,有人可以建议…

嗯,这似乎不适合我。总而言之:我的节点在客户机列表中,我将其从角色中删除,并在其上运行chef client。我尝试运行了
刀库旋转键库项--mode client
,但执行此操作后,我看到该节点仍在库项的客户端列表中。我还尝试了clean开关,但也没有成功:
刀库更新vault123 item1-搜索“role:merole”-mode client--clean
哇哦,键入错误<代码>刀库更新vault123 item1-S“role:merole”--模式客户端--清理正常工作。现在我的问题是为什么rotate命令不起作用?我应该这样做,而不是清洁,或者两者兼而有之?哦。。我甚至可能错了。可能
rotate
实际上只是更新关键点,但不删除与搜索查询不匹配的客户端(这意味着
update
是您的朋友)。@red888
refresh
是更新节点列表的方法,
update
是替换vault中的值的方法:(注释已更正)用
--clean
执行第二个命令就足够了<代码>更新用于将值更新到vault本身,或修改搜索查询和管理列表。如果您的目标是刷新允许的客户端列表,那么使用
refresh
Clean无法使用refresh,它拒绝删除与搜索查询不匹配的节点-可能是个bug?刚才看到--清理链接文档中的未知客户端可能我会尝试,而不是--清理取决于您使用的刀库版本,检查刀库--help以确保--clean未知客户端似乎只清除客户端列表中没有相应密钥的节点。我测试了从节点中删除WebServer角色,然后使用这个--clean unknown clients开关运行刷新,但它没有删除节点。