- From: Alex Soto <
>
- To:
- Subject: [chef] Re: Git / Chef workflow
- Date: Mon, 22 Nov 2010 11:24:49 -0800
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=content-type:mime-version:subject:from:in-reply-to:date :content-transfer-encoding:message-id:references:to:x-mailer; b=QDuihQvUe3HWr7/8H8GXoy3UgFDi07eCv3czmVm+QHInOzEo8cgUjLeH6U3ZwoDSxV mi0JOVicQNQkKpkZw7uNIJD7wUj89x1mHDJbZzZk97KjxNSS3UukgWd3qg95B6w062WE vzfEv2WKL8y+Df9xZsFLiWFx+3yOuFHhXC9E8=
I'm doing what you propose now to manage cookbook development from local ->
Qa -> staging -> prod
However, git only manages the source code. Chef does not yet support
environments, you have to 'fake it' by using a different chef server (or
opscode platform org) for each environment.
This gist shows how I do it by reading in different knife configs based on
the branch I'm on
https://gist.github.com/710473
You still need to upload your cookbooks, roles, etc into each server, so
merging from local to qa won't do it (unless you put in a git hook to do that
for you)
Hope that helps,
Alex
On Nov 22, 2010, at 10:40 AM, Ian Marlier wrote:
>
Hey, All --
>
>
I'm working on figuring out how I'm going to implement Chef with git, and
>
my Google foo seems to be failing me. I know roughly how I want things to
>
work, but I'm not sure whether it's possible, and I'm wondering if anyone
>
has links/pointers/experiences that they can share.
>
>
Here's what I would like to be able to do
>
* Have a single git repository, with the following branches
>
- QA branch
>
- production branch
>
* Have any given change be made exactly once. That is, /etc/config.file
>
will only be edited by hand once, that edit will be applied via git merges
>
to every environment where it needs to be distributed.
>
>
This results in a standard workflow that looks like this:
>
- Changes are made in a local branch, and merged into QA
>
- QA chef server pulls down the changes, and applies them somehow
>
(`knife cookbook upload -a /path/to/local/repo` presumably, or at least
>
that's the only option that I've found so far -- it was pointed out to me
>
on the IRC channel.)
>
- Once changes have been validated in QA, they are merged from the QA
>
branch to the production branch
>
- Production chef servers pull down the changes, and apply them somehow
>
(presumably the same `knife cookbook upload....` command)
>
>
>
I'm running into issues with this work flow, though, and I'm not sure if
>
its because I'm trying to do something that can't be done, or simply
>
because I'm doing things in the wrong way, or what. Specifically:
>
- This doesn't handle anything other than cookbooks -- data_bags get
>
ignored, for example
>
- Because pulling a delete in git doesn't remove anything from the
>
filesystem, old cookbooks stick around
>
>
>
Obviously, there are ways to work around both of these issues, but I don't
>
want to invent the wheel if someone else has already dealt with this. So,
>
my questions:
>
Are other people using chef/git in this way (where git comes before, as
>
opposed to after, chef)?
>
If so, what's the secret sauce? Are there scripts that I need to be
>
looking for that'll make this all easy? Documentation that I can follow?
>
Am I totally misunderstanding anything about how Chef works, given what I'm
>
trying to do?
>
>
>
Thanks for any advice/pointers,
>
>
- Ian
Archive powered by MHonArc 2.6.16.