Você definiu acidentalmente node.normal[:foo][:bar] = 'something bad'
sua receita do chef?
Então você descobriu que os atributos normais do nó persistiam entre as execuções do chef e realmente queria usar o nível de precedência de atributo padrão no attributes/default.rb
arquivo do seu livro de receitas ?
Knife exec é seu amigo:
knife exec -E "nodes.transform(:all) {|n| n.normal_attrs[:foo].delete(:bar) rescue nil }"
Exemplo:
Eu precisava excluir alguns atributos padrão, normais e de substituição para o livro de receitas sudo em todos os nós, então usei:
knife exec -E "nodes.transform(:all) {|n| n.default_attrs['authorization']['sudo'].delete('groups') rescue nil }"
knife exec -E "nodes.transform(:all) {|n| n.normal_attrs['authorization']['sudo'].delete('groups') rescue nil }"
knife exec -E "nodes.transform(:all) {|n| n.override_attrs['authorization']['sudo'].delete('groups') rescue nil }"
Se eu quisesse fazer isso apenas em um determinado nó, passaria uma consulta Solr para node.transform()
:
knife exec -E "nodes.transform('name:dfw-mynode-01') {|n| n.default_attrs['authorization']['sudo'].delete('groups') rescue nil }"
Nota: Knife exec é poderoso … com grande poder vêm grandes responsabilidades