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/-/wXsxrloQTVYJ.
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