[chef] Re: Shef for recipe writing - maybe


Chronological Thread 
  • From: Joshua Timberman < >
  • To:
  • Subject: [chef] Re: Shef for recipe writing - maybe
  • Date: Tue, 4 Oct 2011 22:13:44 -0400

Hello!

On Tue, Oct 4, 2011 at 7:03 PM, Michael Glenney 
< >
 wrote:
>
> But what I don't know is how to test that attribute first, before committing
> that to a recipe.  Generally, for ruby scripting, I do that in IRB.  Was
> kind of hoping shef would provide that for me but I can't get it to work
> like I think it should (and/or don't understand how it should so I can
> change the way I do things).  Another case might be verifying that an
> attribute has been overridden as expected.
>
> I've tried dumping attributes from a node with 'knife node show <nodename>
> -F json > somefile.json' and then launching shef and importing those 'shef
> -j somefile.json' but I still don't seem to be able to access my attributes.

In Shef, you can enter the attributes context:

chef > attributes
chef:attributes >

Which lets you apply attributes to the node object as though you were
modifying a cookbook's attributes file.

If you want to operate on the node object as though in the context of a 
recipe:

chef > recipe

Then use the set, default or override methods on the node object to
set the attributes you want for testing purposes.

chef > recipe
chef:recipe > node.set['tomcat']['folder'] = "/usr/local/tomcat"

To 'erase' the attribute value (e.g., test for non-extistence, simply
set it to nil.

> I'm not really seeking tech support here.  More I'd like to hear from the
> people who are knee deep in chef every day.  Is shef the IRB of Chef as I
> assumed it was?  Do you know of any "best practices" guides or how-tos for
> writing recipes and the best tools/environment settings for doing so?  Am I
> completely off in left field (aka, I'm looking at this all wrong)?

Yes. Shef is an IRB console with a bunch of Chef classes already
loaded. It can function in different contexts (attributes, recipe,
main) and modes (solo, client, standalone). I probably use Shef daily
in testing recipe development.

The wiki has:

http://wiki.opscode.com/display/chef/Shef

We're working on adding a unit on Shef to the Chef Advanced training class.



Archive powered by MHonArc 2.6.16.

§