README.md in librarian-puppet-1.3.2 vs README.md in librarian-puppet-1.4.0
- old
+ new
@@ -28,12 +28,12 @@
framework for writing bundlers, which are tools that resolve, fetch, install,
and isolate a project's dependencies.
## Versions
-Librarian-puppet >= 1.1.0 requires Ruby 1.9 and uses the Puppet Forge API v3.
-Versions < 1.1.0 works on Ruby 1.8.
+Librarian-puppet >= 2.0 (as well as 1.1, 1.2 and 1.3) requires Ruby 1.9 and uses the Puppet Forge API v3.
+Versions < 2.0 work on Ruby 1.8.
See the [Changelog](Changelog.md) for more details.
## The Puppetfile
@@ -53,11 +53,11 @@
metadata
### Example Puppetfile
- forge "https://forge.puppetlabs.com"
+ forge "https://forgeapi.puppetlabs.com"
mod 'puppetlabs-razor'
mod 'puppetlabs-ntp', "0.0.3"
mod 'puppetlabs-apt',
@@ -75,11 +75,11 @@
When fetching a module all dependencies specified in its
`Modulefile`, `metadata.json` and `Puppetfile` will be resolved and installed.
### Puppetfile Breakdown
- forge "https://forge.puppetlabs.com"
+ forge "https://forgeapi.puppetlabs.com"
This declares that we want to use the official Puppet Labs Forge as our default
source when pulling down modules. If you run your own local forge, you may
want to change this.
@@ -165,14 +165,14 @@
`modules/` directory, overwriting whatever was there before.
Librarian-puppet support both v1 and v3 of the Puppet Forge API.
Specify a specific API version when installing modules:
- $ librarian-puppet install --use-v1-api # this is default
- $ librarian-puppet install --no-use-v1-api # use the v3 API
+ $ librarian-puppet install --use-v1-api # this is default; ignored for official Puppet Forge
+ $ librarian-puppet install --no-use-v1-api # use the v3 API; default for official Puppet Forge
-Please note that this does not apply for the official Puppet Forge where v3 is used by default.
+Please note that this does not apply for the official Puppet Forge, where v3 is used by default.
Get an overview of your `Puppetfile.lock` with:
$ librarian-puppet show
@@ -254,9 +254,31 @@
`--no-path` option to the `install` command. Note that if this is set at the
environment or global level then, even if `--no-path` is given as an option,
the environment or global config will be used.
+## Rsync Option
+
+The default convergence strategy between the cache and the module directory is
+to execute an `rm -r` on the module directory and just `cp -r` from the cache.
+This causes the module to be removed from the module path every time librarian
+puppet updates, regardless of whether the content has changed. This can cause
+some problems in environments with lots of change. The problem arises when the
+module directory gets removed while Puppet is trying to read files inside it.
+The `puppet master` process will lose its CWD and the catalog will fail to
+compile. To avoid this, you can use `rsync` to implement a more conservative
+convergence strategy. This will use `rsync` with the `-avz` and `--delete`
+flags instead of a `rm -r` and `cp -r`. To use this feature, just set the
+`rsync` configuration setting to `true`.
+
+ $ librarian-puppet config rsync true --global
+
+Alternatively, using an environment variable:
+
+ LIBRARIAN_PUPPET_RSYNC='true'
+
+Note that the directories will still be purged if you run librarian-puppet with
+the --clean or --destructive flags.
## How to Contribute
* Pull requests please.
* Bonus points for feature branches.