On 09/30/2014 09:23 PM, Garrett Honeycutt wrote: > On 9/30/14 7:17 PM, Tom Tucker wrote: >> >> I just got back from PuppetConf last week and several presenters >> mentioned using more than one Git repo with Puppet. Some even recommend >> having a repo per module. For our initial Puppet deployment this seems >> a bit excessive. My plan was to have three repos for each of our >> environments (Dev, QA and Production). The contents of these repos >> would contain Puppet Enterprise directory of /etc/puppetlabs/puppet. >> > > Hi Tom, > > One big repo full of modules stops scaling pretty quickly. This path > makes it impossible to work in scenario where you have multiple parties > using the same code base. Without individually versioning modules, you > will give up the opportunity to ever make a breaking change, because you > have to appease everyone. You also quickly get into situations where you > cannot deploy the newest version of the code because it changes multiple > modules and one of those causes issues. It leads to long running forks > that will never merge, cherry picking changes, and copy/pasting code. > Avoid this at all costs and save yourself the headaches. > > Here's an example[1] of how I manage a bunch of modules, each in their > own repo. You could then use this Puppetfile with tools such as > librarian-puppet-simple, librarian-puppet, and r10k. I use this repo to > track all of my 'base' or 'common' modules and then use another repo to > track site specific modules. For that repo, I highly recommend r10k. > > [1] - https://github.com/ghoneycutt/puppet-modules > > Best regards, > -g >
I'll echo Garrett's comments that having all your modules in a single repo severely hampers change. Like Garret I use a Puppetfile with which I pull modules in from a a combination of the Puppet Forge and GitHub repos. I do make mine available [1] as well and I include a README of all the modules it includes and also note those that are pulled from the Forge that are listed as "approved" or "supported". I do use r10k and Puppet 3.7.x with directory environments so each branch of my repo is handled as a separate environment when deployed by r10k. I have my puppet environment setup so that all I do is commit to the GitHub repo which triggers Jenkins CI jobs that validate and push out to the puppet master. Once validated after being pushed out I can promote my job and it is merged from one branch to the next and runs through the cycle again. Regard, Jeremy
signature.asc
Description: OpenPGP digital signature