a simple consumer of Puppetfiles with NO dependency resolution that only supports github references
Ruby
Clone or download
jeffmccune Merge pull request #34 from dmitryilyin/master
Change the fetch procedure of the installer
Latest commit 4a28c32 Nov 27, 2017

README.md

librarian-puppet-simple

This project was created out of my frustration with dependency management in librarian-puppet, some people need external dependencies, I just need to be able to pin revisions for a collection of modules, and I found the dependency managment features of librarian-puppet too heavy for my simple use case.

This project just has fewer commands, but they should be compatible with the original librarian-puppet:

Clean

Remove the directory where the modules will be installed. At the moment the supported options are:

  • --verbose display progress messages
  • --path override the default ./modules where modules will be installed
  librarian-puppet clean [--verbose] [--path]

Install

Iterates through your Puppetfile and installs git sources. At the moment the supported options are:

  • --verbose display progress messages
  • --clean remove the directory before installing modules
  • --path override the default ./modules where modules will be installed
  • --puppetfile override the default ./Puppetfile used to find the modules
  librarian-puppet install [--verbose] [--clean] [--path] [--puppetfile]

Update

Iterates through your Puppetfile and updates git sources. If a SHA-1 hash is specified in the :ref, the module will not be updated.

Supported options are:

  • `--verbose` display progress messages
  • `--path` override the default `./modules` where modules will be installed
  • `--puppetfile` override the default `./Puppetfile` used to find the modules
  •   librarian-puppet update [--verbose] [--path] [--puppetfile]
    

    Puppetfile

    The processed Puppetfile may contain two different types of modules, git and tarball. The git option accepts an optional ref parameter.

    The module names can be namespaced, but the created directory will only contain the last part of the name. For example, a module named puppetlabs/ntp will generate a directory ntp, and so will a module simply named ntp.

    Here's an example of a valid Puppetfile showcasing all valid options:

    mod "puppetlabs/ntp",
        :git => "git://github.com/puppetlabs/puppetlabs-ntp.git",
        :ref => "99bae40f225db0dd052efbf1d4078a21f0333331"
    
    mod "apache",
        :tarball => "https://forge.puppetlabs.com/puppetlabs/apache/0.6.0.tar.gz"
    

    Setting up for development and running the specs

    Just clone the repo and run the following commands:

    bundle exec install --path=vendor
    bundle exec rspec
    

    Beware that the functional tests will download files from GitHub and PuppetForge and will break if either is unavailable.

    License

    See LICENSE

    Credits

    The untar and ungzip methods came from https://gist.github.com/sinisterchipmunk/1335041