On Thu, Oct 1, 2009 at 10:56 AM, Calimero <calimero...@evolutive.org> wrote:
>
> On 30 sep, 17:20, Kenneth Holter <kenneho....@gmail.com> wrote:
>> Hello all.
>>
>> We're running Puppet to manage our linux-servers, but as of now we don't
>> really have a good setup for dealing with different environments
>> (production, qass, and so forth). The puppet manifests have been added to
>> Subversion.
>
> We also have our puppet conf versioned by SVN. And, well, ... we still
> don't have a proper system for various stages.
>
> I thought of creating multiple branches in SVN (each branch being
> configured as a puppet environment) and then, when changes seem OK,
> merge (svn merge) them from the dev branch to the testing branch and
> so forth.
>
> But this of course requires some change in SVN usage: commit only
> things that belong together (so that you can 'svn merge -c N ...')
> instead of committing any changes that are dangling in your working
> copy.
>
> Anyway, I would also like to hear how people do this in their setups.
>

We make use of a combination of SVN tags as well as environments. We
configure puppet with the following environments:

development, staging (a.k.a. QA), production, prod-clone, branch1 and branch2

The first 3 should be self-explanatory. Prod-clone is for emergency
fixes outside of our normal update schedule where we can point a
production machine to a branch with the prod puppet code + a fix.
Branch1 and Branch2 are similar to development for major refactoring.

We also have to deal with production control issues, so we created a
schedule for each environment - Development, Branch1 and Branch2 we
are free to update at any time, so systems in those environments are
generally new builds or test/dev systems. QA we update in our Tuesday
evening change window and Production and Prod-clone are updated in our
Thursday evening change window. Prod-clone, by its nature, can get
updated anytime after that, but only in an emergency situation to fix
a problem.

Development is our puppet SVN trunk. Branch1 and Branch2 *can* be SVN
branches, but aren't always. More often than not they're trunk plus
some local changes that once we vet are merged back into trunk. At
some point before Tuesday, we copy trunk to a tag that becomes the
next QA->Production configuration.

We tried doing things the Right Way(TM) with SVN and having branches,
merging fixes from trunk to the branches, cutting tags from the
branches, etc. but it was just too much overhead for what we were
doing. We have found if we keep the release tags fairly frequent
(every week or two), it's fairly easy to stay on top of things and not
break anything. We also comment our check-ins in a specific format so
we know what host(s) the change(s) affect and what the change is. We
use this to generate a summary page that is presented at our weekly
rollout meetings so that the other groups (DBAs, App Developers, etc.)
can see what changes are scheduled for the next change.

This lets us remain agile enough to respond to things, but also gives
some oversight to the process so we don't go breaking anything in
production because we fat-fingered an SVN update or something similar.

Matt

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to