- From: Peter Donald <
>
- To:
- Subject: [chef] Re: Role driven recipes
- Date: Fri, 22 Mar 2013 18:21:31 +1100
Hi,
On Fri, Mar 22, 2013 at 4:58 PM, Warren Bain
<
>
wrote:
>
We have a cookbook that deploys applications and has a number of recipes
>
some of which set up preliminary things like firewall settings and http
>
proxy. We are considering using roles to drive the different roles of a
>
node and there are two approaches we are considering:
>
>
1. Apply roles that pull in all the relevant recipes
>
>
2. Apply roles and one controlling recipe and then have that recipe
>
determine the other dependencies based on the roles that have been applied.
>
>
It seems to me that the second approach means that updating that cookbook
>
will change the way any role operates without needing to update individual
>
roles. And any pre and post recipe action can be managed without needing
>
to add them to every role.
>
>
Any thoughts as to the pros and cons?
My recommendation is actually to do something different. Any time you
find yourself wanting version-able logic for a role you should create
a cookbook to represent that role. See [1] for a description of this.
In our environment we have a need very similar to yours. Many of our
applications are deployed in an application server, GlassFish. Some of
the applications require custom activity before/after they are
deployed.
So what we have done is create a cookbook "fisg-server" that has
dependencies on all the system level configuration/services we need
and includes them in the right order. (i.e. ntp/firewalls/host
configs/network configs/ etc). We also have a "fisg-glassfish"
cookbook that includes a recipes from the "glassfish" cookbook and
some attribute customizations of the "glassfish" cookbook specific to
our environment.
We then have a final role cookbook "fisg-mydomain" that sets up
parameters specific to the domain. It may also include recipes for
application specific pre/post deployment customizations. Typically we
get our application deployment data out of data bags. Inside the data
bag items we include directives and that triggers include_recipe for
application customizations in the "fisg-mydomain".
All in all, we really like how easy it is to release and promote
versions of the application through different environments
[1]
http://realityforge.org/code/2012/11/19/role-cookbooks-and-wrapper-cookbooks.html
--
Cheers,
Peter Donald
Archive powered by MHonArc 2.6.16.