[chef] Re: Re: Re: knife node list output different to Opscode interface


Chronological Thread 
  • From: aaron peterson < >
  • To:
  • Subject: [chef] Re: Re: Re: knife node list output different to Opscode interface
  • Date: Thu, 19 Jul 2012 06:48:04 -0700

You can write the knife.rb to read the chef environment value from a
shell environment variable.  There seems to be a bit of a workaround
needed to make sure the current "if environment is set" logic works:

  # in knife.rb
  unless ENV['CHEF_ENV'].empty?
    environment ENV['CHEF_ENV']
  end


Then you can set it to get a default:

  # in your shell
  export CHEF_ENV=prod
  knife node list
  # (returns prod nodes)

and temporarily unset that with a little-used bash/zsh feature called
environment augmentation:

  CHEF_ENV= knife node list
  # (returns all nodes)
  knife node list
  # (returns prod nodes)



--
Aaron Peterson

On Thursday, July 19, 2012 at 2:16, Nick Peirson wrote:

On 18/07/2012 23:41, Steven Danna wrote:

Do you have an environment set in your config file that might be
filtering out some of the results?

Yup, that was it. Thanks for the quick reply.

Is there anyway to unset that from the command line? Most knife tasks I
want to run with the default environment I've specified in my knife.rb,
however I want to override this to operate on all environments in some
cases.

I could list environments and loop through them as a last resort, but
seems arduous and quite slow, as it has to make a few trips to opscode
to get all the nodes from all environments. I suppose separate knife.rb
files that include commonalities might be another solution.

Any thoughts on best practice?

Cheers
Nick



Archive powered by MHonArc 2.6.16.

§