Sometimes we face situation like :
- May need to remove some persistent attributes which we set a flag after some work is done
- May be we set some attributes wrong so need to remove and reset the existing attribute.
The attribute may be set in attributes/default.rb OR insdie recipe with node normal attribute OR node set OR node override attributes.
There is a nice tool of chef (chef exec) with which we can transform the attributes.
Usage:
Suppose a node with attribute hierarchy :
“normal” :[
{
“install_oradb” : [
“is_installed” : “True”,
“is_running” :”True”
}
]
knife exec -E "nodes.transform(:all) {|n| n.normal_attrs[:install_oradb].delete(:is_installed) rescue nil }"
knife exec -E "nodes.transform(:all) {|n| n.normal_attrs[:install_oradb].delete(:is_running) rescue nil }"
Here we can replace normal_attrs with override_attrs OR default_attrs as required.
This will remove the attributes from all the nodes.
Suppose we want remove the attributes from a particular node. In this case you have to get search the node name from the chef solr index and replace the all with the required node.
e.g.
knife exec -E "nodes.transform(:node2) {|n| n.normal_attrs[:install_oradb].delete(:is_installed) rescue nil }"
knife exec -E "nodes.transform(:node2) {|n| n.normal_attrs[:install_oradb].delete(:is_running) rescue nil }"