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