- 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.