Puppet Modules – Best Practices for Installing External Modules and Downloading Packages

I wrote this small puppet module:
https://github.com/entheologist/puppetmods-bioperl

Which installs a package called BioPerl. Now I’m writing a module to install another package (Ensembl Perl API) which depends on the BioPerl package so I have to make sure this package is installed first.

How do module authors usually install package dependencies? I could install puppet, and run puppet module install {vendor-package} but something tells me that would be very bad practice. I could also clone the git repository of the module into the modules directory, but I get the feeling theres a better way to do it than that. Is it bad practice to clone git repositories from within your module?

Heres the init.pp file of the module I’ve made so far:
http://pastebin.com/mRGCEsy1

Its quite messy with all of these downloading archives, extracting them and deleting them. It would be a whole lot cleaner to use the puppet-archive module to handle all the downloading and extracting of archives, but I need to install that module before I can use it. How do module authors tend to go about installing external modules that their modules depend on?

Git Baby is a git and github fan, let's start git clone.