Hi Alex,
I generally implement both for customers. Though I use Dan Bode's
librarian-puppet-simple which purposely does not handle dependencies. I
spoke at a couple Puppet Camp's regarding dealing with modules and here
are slides[1] explaining the pro's and con's of the different approaches.
R10k is great, even with a build pipeline, because the caching feature
really speeds up the build jobs over librarian-puppet, which will need
to download the git repo's each time.
I maintain a bunch of modules that you might consider as common or base
to an OS such as SSH, NTP, PAM, hosts, timezone, NFS, etc as well as
code for modeling PuppetDB, Puppet agents and masters that are tracked
in a Puppetfile[2]. Since that has its own life cycle outside of the
clients' and does not need git branch to environment mapping it is
maintained with librarian-puppet-simple.
I've also used r10k to build Puppet platform as a service for large
enterprises that have many products and teams with their own distinct
environments. This allows many teams to leverage each others work while
giving them their own autonomy with regards to number of environments,
testing abilities, module versions and release schedules.
[1] -
http://www.slideshare.net/gh/20141111-multiple-approaches-to-managing-puppet-modules-puppet-camp-seattle
[2] -
https://github.com/ghoneycutt/puppet-modules
Best regards,
-g
--
Garrett Honeycutt
@learnpuppet
Puppet Training with LearnPuppet.com
Mobile:
+1.206.414.8658