为什么厨师节点在删除角色后仍会保留角色?

为什么厨师节点在删除角色后仍会保留角色?

我们有几台服务器,具有常见的角色和配方组合。

但是我们发现了一个问题:从服务器中删除角色后(具体来说:从其运行列表中删除并重新配置),随后通过刀搜索和配方对该角色的搜索仍会返回服务器。

这是为什么?检查节点(刀节点显示)时,角色不在“角色”列表中,因此结果对我来说没有多大意义。

答案1

您是否已验证角色在重新配置后不再出现在节点的 JSON 中?重新配置时,您可能会覆盖服务器存储的运行列表(可能已覆盖/etc/chef/firstboot.json),并且此运行列表会保留回服务器,即使您之前已将其删除。

答案2

经过很长一段时间,我们发现了 Chef 的一个非常具有误导性的功能,即搜索所有属性,无论深度级别如何,而不考虑名称是否“特殊”。

这意味着如果一台机器具有roles = ['smartpants'],并且具有属性node[:foo][:bar][:roles] = 'fancypants',则 的搜索结果roles:fancypants将包括该机器。

在某些情况下,拥有这样的结构是合理的,但如果不了解这些细节,就会导致大量的麻烦。

相关内容