Chef

為什麼廚師節點在刪除它們後保留角色?

  • November 20, 2015

我們有一些伺服器,具有通常的角色和配方組合。

但是我們發現了一個問題:從伺服器中刪除角色後(特別是:從其執行列表中刪除並重新配置),隨後通過刀搜尋和配方搜尋該角色仍然返回伺服器。

這是為什麼?檢查節點時(刀節點顯示),“角色”列表中不存在該角色,因此結果對我來說沒有多大意義。

很長一段時間後,我們發現了 Chef 的一個非常具有誤導性的功能,那就是搜尋所有屬性,任何深度級別,而不考慮名稱是否“特殊”。

這意味著如果一台機器具有roles = ['smartpants']和 一個屬性node[:foo][:bar][:roles] = 'fancypants',則搜尋結果roles:fancypants將包括該機器。

在某些情況下,有這樣的結構是合理的,在不了解這些細節的情況下,會導致大量的拉扯。

您是否確認角色在重新配置後不再出現在節點的 JSON 中?當您重新配置時,您可能會覆蓋伺服器儲存的執行列表 - 可能與/etc/chef/firstboot.json- 並且此執行列表正在持久化回伺服器,即使您之前已將其刪除。

引用自:https://serverfault.com/questions/540429