We are still using svn, but looking on adapt this to git next year.

This is a simplified view of our svn repo:

- nodes
-- dev
--- trunk
--- tags
---- 20121220-121212
-- prod
--- trunk
--- tags
- modules
-- apache
--- trunk
--- tags
---- 20121220-121212
-- something_else
--- trunk
--- tags
---- 20121220-121212

We then have a utility (link_puppet) that:
* takes a module, tag and environment as command line options 
* Updates the svn sandbox in /opt/puppet/svn/modules/$module
* links /opt/puppet/svn/modules/$module/tags/$tag to 
/etc/puppet/environments/$env/modules/$module

It also validates the module before linking, logs who did what when. Pretty 
handy.

— Mason Turner

On Dec 20, 2012, at 8:36 AM, Benjamin Priestman <benja...@miniverse.me.uk> 
wrote:

> I've tried using https://github.com/azimux/externals (referenced in Version 
> Control with Git) which kind of works, but is a bit buggy and I've yet to 
> come up with an easily understood workflow.
> 
> On Tuesday, 18 December 2012 17:59:48 UTC, Malte Janduda wrote:
>> 
>> Hi folks,
>> 
>> we are looking for a way to manage our puppet modules in a convenient way. 
>> At the moment we have about 30 modules which are versionized with git or 
>> mercurial. Most of them are self-made, some are from github.
>> We thought it would be a good idea to use mercurial subrepositories to 
>> manage the versions of those modules. Well, it is not. Everytime you push 
>> your commits to the server all subrepositories are checked for updates. It 
>> takes minutes to push your changes! And if you have to merge something you 
>> do not really know what happens. You just try every command which appears in 
>> your mind - multiple times and in different order :D
>> It happened three times that every developer had to delete the whole module 
>> tree and check it out again because something was broken.
>> git submodules do not seem to be fun either.
>> 
>> I have looked for an alternative to submodules/subrepositories and found 
>> librarian-puppet (https://github.com/rodjek/librarian-puppet). Unfortunately 
>> it does not really work good for me. A lot of useless error messages if 
>> something is configured wrong. This is pretty important for us. All 
>> developers should be able to use the versioning tool. It has to be easy to 
>> use. Further the librarian-puppet does not seem to be backed by a healthy 
>> community. Just every few months a commit and a lot of open issues and 
>> pull-requests.
>> 
>> I have hacked some Python code to realize something similar: dyps - 
>> https://github.com/MalteJ/dyps
>> You have a yaml file which defines your modules: name, source, version and 
>> DVCS system (git/hg):
>> 
>> - dep: mysql
>>   source: https://github.com/puppetlabs/puppetlabs-mysql.git
>>   type: git
>>   version: af4b8bff0ad59f21211be2a98d31588066c41e0c
>> 
>> All modules are downloaded to the folder "dependencies" when executing "dyps 
>> run".
>> You can decide if you want to get a specific changeset at the next run or if 
>> you want to get the latest changes - just discard the version property or 
>> execute "dyps release your-module-name". If you want to keep the current 
>> version execute "dyps keep your-module". You can update one or all 
>> versionized modules via "dyps update your-module" or "dyps update-all". The 
>> modules without a defined versioned are updated at every dyps run.
>> 
>> I have added an import function for mercurial subrepository .hgsub files. 
>> Feel free to extend it with an importGitSubmodules function ;-)
>> 
>> 
>> What do you think about this approach?
>> How are you managing your modules/dependencies?
>> 
>> Best,
>> Malte
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/puppet-users/-/VZjQExuTnvAJ.
> 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.

-- 
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