[chef] Re: Re: Why an environment's override_attributes are not set until chef-client completes successfully?


Chronological Thread 
  • From: Jay Pipes < >
  • To:
  • Subject: [chef] Re: Re: Why an environment's override_attributes are not set until chef-client completes successfully?
  • Date: Mon, 04 Feb 2013 12:27:59 -0500

On 02/04/2013 12:18 PM, Daniel DeLeo wrote:
> On Monday, February 4, 2013 at 9:02 AM, Jay Pipes wrote:
>> Why doesn't a node's environment override_attributes get merged to the
>> node's attribute collection before chef-client runs? Why would
>> convergence need to occur before a node's environment attributes are set
>> in the node's attributes collection?
>>
> Most likely, you're seeing
> this: 
> http://docs.opscode.com/breaking_changes_chef_11.html#role-and-environment-attribute-changes
> Chef 11 should work like you expect.

Yeah, unfortunately the unexpected release of Chef 11 last night borked
our deployment as cookbooks suddenly just started failing. John Dewey
posted to the list about it.

>> A more general question would be: data is data, why on Earth do Chef
>> searches return different data about a node depending on whether
>> chef-client has run successfully on a node or not? I can understand this
>> behaviour for automatic attributes from Ohai, but it does not make much
>> sense for any other attributes, IMHO.
>
> The chef client run builds up attributes from environments, roles, and
> cookbooks. Since you can change these at any time you like, Chef doesn't
> save the node data until the chef run has completed successfully. For
> example, you could populate attributes from a ruby_block resource as the
> very last step of a Chef run, and depend on those values being present
> for search. If Chef saves and indexes your node data without these, your
> nodes would disappear and reappear in searches.

This doesn't make a whole lot of functional sense to me. Like I said,
data is data. It doesn't magically change after a chef-client run (other
than automatic attributes like I mention above). It's just confusing to
have attribute values either be available or not available depending on
whether a chef-client run has completed successfully.

> That said, you can manually save the node data with `node.save` in a
> recipe at any time you like.

Yes, we ended up having to use node.save in a Galera cluster cookbook
were were using when we saw that Chef searches were entirely
non-deterministic if you were relying on attributes that would only be
set if the chef-client run had succeeeded. It's a major design flaw, IMHO.

-jay

>> Best,
>> -jay
> HTH,
> 
> Dan DeLeo



Archive powered by MHonArc 2.6.16.

§