[chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Recipes execution order


Chronological Thread 
  • From: "Julian C. Dunn" < >
  • To: " " < >
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Recipes execution order
  • Date: Wed, 11 Jun 2014 13:12:31 -0400

The Chef Client makes no choices like that -- it only runs things in
the order you specify. It will not re-order things for you.

- Julian

On Wed, Jun 11, 2014 at 6:30 AM, Carlos Camacho
< >
 wrote:
> Perfect i also thought that recipes are explored linearly as they were
> in the run list.
>
> Can you tell me a case (if there is) in which when the chef-client
> figures out which cookbooks it needs. To decide for example, why
> choose cookbookA then cookbookB or choose cookbookB then cookbookA??
> But not using constraints or dependencies, i mean for example,
> choosing cookbookA then cookbookB is better because executing
> cookbookA first then cookbookB takes less time or overload less the
> system or something similar?
>
> Cheers!
>
>
> On Wed, Jun 11, 2014 at 9:45 AM, Noah Kantrowitz 
> < >
>  wrote:
>> That kind of analysis is not performed at the level of recipes. Once a 
>> converge starts, it is pretty straight forward (on purpose) and 
>> effectively just executes linearly. That said, there is that kind of 
>> solver run at the level of cookbook versions. When chef-client starts up 
>> it figures out which cookbooks it needs based on the run list expansion, 
>> and then asks the chef-server to find the best set of versions for those. 
>> This takes in to account the inter-cookbook dependencies, environment 
>> constraints, and tries to use more recent versions when possible. The 
>> intent isn't to offer multiple convergence paths though, that seems too 
>> complex to hold a mental model of, and therefore exceptionally likely to 
>> break :-)
>>
>> --Noah
>>
>> On Jun 11, 2014, at 12:38 AM, Carlos Camacho 
>> < >
>>  wrote:
>>
>>> You are right, maybe the recipes are not the most accurate approach to
>>> show an example of my research line
>>> (http://simba.fdi.ucm.es/at/1-s2.0-S0950584913001262-main.pdf)
>>>
>>> I think Chef is not a good example for my research line, because i
>>> want to say things like this.
>>>
>>> Execute cookbookA -> cookbookB is bettter than execute cookbookB -> 
>>> cookbookA
>>>
>>> Or
>>>
>>> Execute recipeA -> recipeB is better than execute recipeB -> recipeA
>>>
>>>
>>> Better (Run faster, Occupy less memory, etc..)
>>>
>>> But i cant find any situation in which i can say things like this.
>>> If you have any idea they will be welcome!
>>>
>>> Cheers!
>>>
>>>
>>> On Tue, Jun 10, 2014 at 8:24 PM, Dan Razzell 
>>> < >
>>>  wrote:
>>>> Hi Carlos,
>>>>
>>>> You can define a recipe which invokes include_recipe conditionally, 
>>>> thereby
>>>> affecting the execution order, if that's truly all you need.  But there 
>>>> are
>>>> two things to watch out for:
>>>>
>>>> 1) If the same recipe is included multiple times, only the first 
>>>> inclusion
>>>> will be processed.
>>>>
>>>> 2) The evaluation of recipes in Chef is done in the preprocessing stage, 
>>>> so
>>>> it won't have access to
>>>> values produced during subsequent resource processing.
>>>>
>>>> If your algorithm needs to access dynamic values, you have to implement 
>>>> it
>>>> in a resource such as ruby_block or in custom resources that you define.
>>>> The Chef DSL is essentially a macro expansion, so any control structure 
>>>> such
>>>> as conditionals or iteration in the recipes will be expanded to produce
>>>> static text, which is then evaluated in the ordinary manner.
>>>>
>>>> Cheers,
>>>> Dan
>>>>
>>>> http://docs.opscode.com/chef/dsl_recipe.html#include-recipes
>>>>
>>>>
>>>> On 14-06-10 10:51 AM, Carlos Camacho wrote:
>>>>
>>>> Perfect, now ill try to change the answer.
>>>>
>>>> Im modeling SPL's as part of my PhD course. Now i really like Chef and
>>>> i wish to be able to model a condition in which the execution order of
>>>> a Chef process (Calculating the recipes run list for example) can
>>>> vary. If a i execute A firt then B or B first and then A.
>>>>
>>>> Any idea? It will be an example of how to apply a formal semantics to
>>>> calculate the best product. Im assuming that Chef is a SPL which
>>>> generates valid configurations (Products) to be installed on a node.
>>>>
>>>> Cheers!
>>>>
>>>>
>>>> On Tue, Jun 10, 2014 at 12:22 PM, Noah Kantrowitz 
>>>> < >
>>>> wrote:
>>>>
>>>> Recipes and roles that you actually put in a run list should be
>>>> self-contained. This means that they should both be order-independent and
>>>> idempotent, so it shouldn't matter either way.
>>>>
>>>> --Noah
>>>>
>>>> On Jun 10, 2014, at 2:51 AM, Carlos Camacho 
>>>> < >
>>>> wrote:
>>>>
>>>> Perfect,
>>>>
>>>> But in my case I'm trying to model something in chef in which the
>>>> order of cookbooks or recipes can vary.
>>>>
>>>> For example:
>>>>
>>>> Using
>>>> DB and WEB roles.
>>>> Apache and MySQL cookbooks.
>>>> A set of recipes for each cookbook.
>>>>
>>>> Now i want to create a node within the DB and WEB roles.
>>>>
>>>> I want to know if there are cases in which is better to apply the WEB
>>>> then the DB roles recipes or DB first and then WEB.
>>>>
>>>> Any idea of situations like this? In which the order of the execution
>>>> can improve the system behavior (For example, the execution time for
>>>> all recipes, or roles, or environments)?
>>>>
>>>> Cheers!!!
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Jun 10, 2014 at 11:16 AM, Noah Kantrowitz 
>>>> < >
>>>> wrote:
>>>>
>>>> On Jun 10, 2014, at 1:18 AM, Carlos Camacho 
>>>> < >
>>>> wrote:
>>>>
>>>> Hello!!!
>>>>
>>>> I'm trying to do some research on how evaluate chef recipes when they
>>>> are executed.
>>>>
>>>> For example:
>>>>
>>>> I have a lot of recipes inside my Apache2 cookbook.
>>>>
>>>> default.rb
>>>> god_monitor.rb
>>>> iptables.rb
>>>> logrotate.rb
>>>> ...
>>>> ...
>>>> ...
>>>>
>>>> Is there a way to establish a weight for the recipes order??..
>>>>
>>>> A) default.rb -> god_monitor.rb -> iptables.rb -> logrotate.rb = 2.3
>>>> B) default.rb -> iptables.rb -> god_monitor.rb -> logrotate.rb = 3.6
>>>> C) logrotate.rb -> default.rb -> god_monitor.rb -> iptables.rb = 1
>>>> D) default.rb -> god_monitor.rb -> iptables.rb -> logrotate.rb = 6.1
>>>>
>>>> In this case is better to execute D than, B than, A than C.
>>>>
>>>> Recipes execute in the order you tell them to. First the run list is
>>>> recursively expanded so roles are replaced by their run list until you 
>>>> just
>>>> have a list of recipes. Then each is executed in order. If, while 
>>>> executing,
>>>> it hits an include_recipe, then it executes that recipe at that point. 
>>>> All
>>>> other file types where it loads all of them are executed is ASCII sort
>>>> order.
>>>>
>>>> --Noah
>>>>
>>>>
>>



-- 
[ Julian C. Dunn 
< >
          * Sorry, I'm    ]
[ WWW: http://www.aquezada.com/staff/julian    * only Web 1.0  ;]
gopher://sdf.org/1/users/keymaker/           * compliant!    ;]
[ PGP: 91B3 7A9D 683C 7C16 715F 442C 6065 D533 FDC2 05B9       ]



Archive powered by MHonArc 2.6.16.

§