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


Chronological Thread 
  • From: Carlos Camacho < >
  • To: " " < >
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Recipes execution order
  • Date: Wed, 11 Jun 2014 09:38:29 +0200

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



Archive powered by MHonArc 2.6.16.

§