У нас есть несколько серверов с обычным набором ролей и рецептов.
Однако мы обнаружили проблему: после того, как роль была удалена с сервера (в частности: удалена из ее списка выполнения и повторно подготовлена), последующие поиски этой роли, как с помощью ножевого поиска, так и по рецептам, по-прежнему возвращают сервер.
Это почему? При проверке узла (отображение ножевого узла) роль отсутствует в списке «Роли», поэтому результаты не имеют для меня особого смысла.
Вы проверили, что роль больше не отображается в JSON узла после повторной подготовки? Возможно, что при повторной инициализации вы переопределяете список выполнения, сохраненный сервером - возможно, с помощью /etc/chef/firstboot.json
- и что этот список запусков сохраняется на сервере, даже если вы удалили его ранее.
Спустя долгое время мы обнаружили очень вводящую в заблуждение функциональность Chef, то есть поиск по всем атрибутам на любом уровне глубины, независимо от того, является ли имя «особенным».
Это означает, что если машина roles = ['smartpants']
, и атрибут node[:foo][:bar][:roles] = 'fancypants'
, результат поиска для roles:fancypants
буду включать такую машину.
В некоторых случаях разумно иметь такую структуру, которая, не зная этих деталей, приведет к сильному выдергиванию волос.