How do you automatically install puppet modules on `puppet apply`

Is it possible to automatically install or include puppet modules in your puppet config? I'm having to manually run puppet module install before running puppet apply.


I'm downloading modules and storing them in a directory above my Vagrantfile in which I've specified the path to find modules using config.vm.provision :puppet, :module_path => "modules" and then including them in my puppet manifest.


AFAIK it's not possible with 'vanilla' Puppet, but with librarian-puppet it's possible:

Librarian-puppet is a bundler for your puppet infrastructure. You can use librarian-puppet to manage the puppet modules your infrastructure depends on. It is based on Librarian, a framework for writing bundlers, which are tools that resolve, fetch, install, and isolate a project's dependencies.

Librarian-puppet manages your modules/ directory for you based on your Puppetfile. Your Puppetfile becomes the authoritative source for what modules you require and at what version, tag or branch.

Once using Librarian-puppet you should not modify the contents of your modules directory. The individual modules' repos should be updated, tagged with a new release and the version bumped in your Puppetfile.