Существует несколько способов проверить наличие вложенного атрибута в шеф-поваре, и я не уверен, какой из них правильный/лучший, и если какой-либо из них приведет к хранению пустых атрибутов на узле:
node[:parent] and node[:parent][:child]
node.attribute?(:parent) and node[:parent].attribute?(:child))
node[:parent].nil? and node[:parent][:child].nil?
Было бы гораздо предпочтительнее иметь возможность одновременно проверять родительский и дочерний элементы, но я не знаю, возможно ли это. Я использую Chef 10, а не Chef 11, хотя ответы с пояснениями приветствуются.