An attribute can be defined at multiple places and it is very important to declare an attribute at the right place with right precedence order. During a chef-client run, attributes are collected from the following different sources:
Nodes (collected by Ohai at the start of each chef-client run)
Attribute files (associated with cookbook) are collected during compile time
Recipes (associated with cookbook. The attributes specified in the recipes might be collected during run time as well
Environments
Roles
The life cycle of an attribute can be understood by the following sequence of steps:
Developer writes attributes in the attribute file, recipe, role, or environment.
The concerned code is pushed to the Chef server.
During the chef-client run, Ohai collects all the automatic attributes from the node.
The chef-client will pull node object from the chef-server, which will in turn bring in the
normal
attributes that are persistent.The chef-client will update the cookbook...