Puppet environments using git

We currently have the following puppet environments setup with correspond to git branches in our puppet repo:

ops
dev
qa
prod

Our environment is setup like this

Core modules - These are the core modules that all sub projects rely on which is maintained by ops
-project modules - these are project specific modules that can be very different from each other but they rely upon core.

This works great but the problem we are starting to run into is that we have multiple projects on the in which one set of code isn't ready to move to qa but ...(more)

1 Answer

We moved to 1 module per git repo. However, the puppet-librarian approach allows individual modules to be deployed from one grand git repo.

Another tool called r10k takes the puppet-librarian approach of using a Puppetfile, and extends it to multiple environments. Each branch of a repo represents a puppet environments, and each environment contains a Puppetfile that defines which modules (and versions/branches/tags) that environment should use.