<commit_before># Librarian-puppet

[![Build Status](https://travis-ci.org/rodjek/librarian-puppet.png?branch=master)](https://travis-ci.org/rodjek/librarian-puppet)

## Introduction

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](https://github.com/applicationsonline/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.

## The Puppetfile

Every Puppet repository that uses Librarian-puppet will have a file named
`Puppetfile` in the root directory of that repository.  The full specification
for which modules your puppet infrastructure repository  depends goes in here.

### Simple Puppetfile

This Puppetfile will download all the dependencies listed in your Modulefile from the Puppet Forge

    forge "http://forge.puppetlabs.com"

    modulefile


### Example Puppetfile

    forge "http://forge.puppetlabs.com"

    mod "puppetlabs/razor"
    mod "puppetlabs/ntp", "0.0.3"

    mod "puppetlabs/apt",
      :git => "git://github.com/puppetlabs/puppetlabs-apt.git"

    mod "puppetlabs/stdlib",
      :git => "git://github.com/puppetlabs/puppetlabs-stdlib.git"


### Recursive module dependency resolving

When fetching a module all dependencies specified in its
`Modulefile` and `Puppetfile` will be resolved and installed.

### Puppetfile Breakdown

    forge "http://forge.puppetlabs.com"

This declares that we want to use the official Puppet Labs Forge as our default<commit_msg>Update readme with main features<commit_after># Librarian-puppet

[![Build Status](https://travis-ci.org/rodjek/librarian-puppet.png?branch=master)](https://travis-ci.org/rodjek/librarian-puppet)

## Introduction

Librarian-puppet is a bundler for your puppet infrastructure.  You can use
librarian-puppet to manage the puppet modules your infrastructure depends on,
whether the modules come from the [Puppet Forge](http://forge.puppetlabs.com/),
Git repositories or a just a path.

* Librarian-puppet can reuse the dependencies listed in your Modulefile
* Forge modules can be installed from [Puppetlabs Forge](http://forge.puppetlabs.com/) or an internal Forge such as [Pulp](http://www.pulpproject.org/)
* Git modules can be installed from a branch, tag or specific commit, optionally using a path inside the repository
* Module dependencies are resolved transitively without neededing to list all the modules explicitly


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.

It is based on [Librarian](https://github.com/applicationsonline/librarian), a
framework for writing bundlers, which are tools that resolve, fetch, install,
and isolate a project's dependencies.

## The Puppetfile

Every Puppet repository that uses Librarian-puppet will have a file named
`Puppetfile` in the root directory of that repository.  The full specification
for which modules your puppet infrastructure repository  depends goes in here.

### Simple Puppetfile

This Puppetfile will download all the dependencies listed in your Modulefile from the Puppet Forge

    forge "http://forge.puppetlabs.com"

    modulefile


### Example Puppetfile

    forge "http://forge.puppetlabs.com"

    mod "puppetlabs/razor"
    mod "puppetlabs/ntp", "0.0.3"

    mod "puppetlabs/apt",
      :git => "git://github.com/puppetlabs/puppetlabs-apt.git"

    mod "puppetlabs/stdlib",
      :git => "git://github.com/puppetlabs/puppetlabs-stdlib.git"


### Recursive module dependency resolution

When fetching a module all dependencies specified in its
`Modulefile` and `Puppetfile` will be resolved and installed.

### Puppetfile Breakdown

    forge "http://forge.puppetlabs.com"

This declares that we want to use the official Puppet Labs Forge as our default
{'fraction_non_alphanumeric': 0.0795577715152829, 'fraction_numerical': 0.001300672013873835, 'mean_word_length': 4.512544802867383, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 6, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6211709', 'n_tokens_mistral': 1436, 'n_tokens_neox': 1372, 'n_words': 516}