[chef] Re: Quickly check if a runlist's cookbook version constraints are satisfied?


Chronological Thread 
  • From: Steven Danna < >
  • To: " " < >
  • Subject: [chef] Re: Quickly check if a runlist's cookbook version constraints are satisfied?
  • Date: Wed, 11 Feb 2015 14:12:20 +0000

Hi,

Using just knife:

knife exec -E 'api.post("environments/prod/cookbook_versions",
:run_list => ["cookbook_b", "cookbook_a"])'

Where prod would be replaced by the environment and cookbook_a and
cookbook_b represent cookbooks in your runlist.  The API signature is
a little odd as the thing it calls a run_list only wants cookbooks and
not fully qualified recipe names.  If it returns successfully
(outputing nothing), the dependencies were resolvable.  If it
explodes, they were not:

knife exec -E 'api.post("environments/prod/cookbook_versions",
:run_list => ["cookbook_b", "cookbook_c"])'
ERROR: Precondition Failed
Response: {"message"=>"Run list contains invalid items: no such
cookbook cookbook_c.", "non_existent_cookbooks"=>["cookbook_c"],
"cookbooks_with_no_versions"=>[]}

> knife exec -E 'api.post("environments/prod/cookbook_versions", :run_list => 
> ["cookbook_b", "cookbook_a"])'
ERROR: Precondition Failed
Response: {"message"=>"Run list contains invalid items: no versions
match the constraints on cookbook (cookbook_a >= 0.0.0).",
"non_existent_cookbooks"=>[],
"cookbooks_with_no_versions"=>["(cookbook_a >= 0.0.0)"]}

Noah wrote a plugin that also might be of interest:

https://github.com/coderanger/knife-solve

On Wed, Feb 11, 2015 at 1:10 PM, Harry Wilkinson 
< >
 wrote:
> Hi all.
>
> Is there some nice convenient way to check whether cookbook constraints can
> be satisfied for a given runlist in a given environment?
>
> I'm trying to add a lot of new constraints to an environment that has had
> almost none for quite a while. At first I just added a simple constraint for
> every cookbook to specify that each one must be the latest available
> version, but I quickly found that made the dependencies unsolvable for some
> runlists, as some cookbooks (eg. the nginx community cookbook) have
> pessimistic version constraints.
>
> I would like to check that the dependencies are solvable without having to
> actually verify a real convergence on every single runlist (there are a lot
> of them). Is there some easy way to exercise that dependency resolution
> process on its own?
>
> Thanks.
>
> Harry
> --
> Harry Wilkinson | Manager, Cloud Engineering | Medidata Solutions Worldwide
> Metro Building, 1 Butterwick, Hammersmith, London W6 8DL
> Twitter: @harwilk
>
> The information in this transmittal and any attachments are confidential and
> intended only for the recipient(s) listed above.
> You are hereby notified that any unauthorized distribution or copying of
> this transmittal or its attachments is prohibited.
> If you have received this transmittal in error, please notify the sender.



Archive powered by MHonArc 2.6.16.

§