Details
Description
Including the #chef-hacking chat that lead up to this:
<`jatan> hmm <`jatan> running the mysql recipe twice on chef-solo breaks <`jatan> cause node attributes are not persisted properly and secure_password gets regenerated <`jatan> is this known behavior or should considered to be a bug? ie - not idempotent <`jatan> aah, http://tickets.opscode.com/browse/COOK-314 <bawt> COOK-314 (1/3): 'mysql::server bombs when no passwords set' updated at 2010-07-11T08:21:16+00:00 https://tickets.opscode.com/browse/COOK-314 <`jatan> hmm <`jatan> I'm thinking we need to hack node save function to write to Chef::Config[:json_attribs] <`jatan> why would that be bad? <`jatan> chef client already does the same <`jatan> as an safety feature, it should be handled via the usual checksum/backup routine <Mithrandir> it should probably have a state file somewhere, but I don't think :json_attribs is a good choice <`jatan> Mithrandir, so another config option Chef::Config[:solo_state_attributes] ? <`jatan> but where should it be located then? <`jatan> in the same dir as json_attribs? <`jatan> the argument for json_attribs is that all the changes goto one place <`jatan> easier to review <`jatan> con is that when you have your config in git and then update it.. merges become messy <`jatan> on the whole, separate file is better.. you can still have it in git and you can diff it for changes <Mithrandir> isn't there a state dir on the client? <`jatan> Mithrandir, what's the config option for it then? <`jatan> looked at lib/chef/config.rb ..didn't see it <Mithrandir> maybe we need to make one, "localstatedir" or something and then have some of the others hang off it, like the checksum dir. <`jatan> you mean node_path perhaps? <Mithrandir> nope, doesn't look like there's anything, really. <`jatan> node_path seems to fit <`jatan> since node.rb uses it to # Find a recipe for this Chef::Node by fqdn. Will search first for <`jatan> # Chef::Config["node_path"]/fqdn.rb, then hostname.rb, then default.rb. <`jatan> so it looks like some overrides already go there <`jatan> it's weird <`jatan> but that's the only place using it <Mithrandir> ok, sounds like a sensible place, then
Available at http://github.com/toomasp/chef/tree/CHEF-1608
Not sure I liked what I ended up with - but it does work.