[chef] Re: proper example of state attributes?


Chronological Thread 
  • From: Daniel DeLeo < >
  • To:
  • Subject: [chef] Re: proper example of state attributes?
  • Date: Thu, 19 Feb 2015 15:21:42 -0800



On Thursday, February 19, 2015 at 2:45 PM, Medya wrote:

> can someone explain me difference of normal attributes in lwrp with state 
> attributes and a good example ?
>  
> I have not used state attribute yet, but my assumption is its supposed to 
> be reflexing the current state ? how is that diffrent with normal attribute 
> , both of them can be accessed outside and both can be changed if you want 
> to ...  

State attributes just declare which attributes in a resource actually 
describe the state of the underlying system. Consider for example, a package 
resource. It has a package name and a version. Installing a package changes 
the state of the version from “null” (not installed) to some version number. 
Upgrading and downgrading change the version from one version number to a 
different version number. The package resource has bunch of other attributes 
that don’t describe the actual desired state of the system but instead give 
Chef hints about how to transition from one state to another. For example, 
the timeout attribute tells Chef how long it should wait before assuming a 
package install operation got stuck. But whether the timeout is 5 seconds or 
5 hours has nothing to do with the package’s state. There are lots of other 
examples, such as customizing the start and stop commands of a service, the 
atomic update stuff for files, and so on; all of these only tell chef how to 
change your system from one state to another, but do not describe the state 
of the system.

The list of state attributes is used by the reporting system in Chef (1) so 
that only meaningful information about system changes is sent to the 
reporting service (which is a paid add-on to the server, though there are 
free alternatives like foreman that re-use the client code).

Note also that the identity attribute has a similar function, it says which 
attribute of a resource uniquely identifies the actual thing on the system it 
represents. For a file, it’s the path, for package it’s the name, etc.

HTH

--  
Daniel DeLeo

1. 
https://github.com/chef/chef/blob/b69b4efc17c6a34a43df6265d02a624fe2e8dd14/lib/chef/resource_reporter.rb#L93-L98



Archive powered by MHonArc 2.6.16.

§