Initial README and LICENSE.
Set .ruby-version to 1.9.3

Supported by rbenv and rvm. The short name `1.9.3` should be an alias to
your desired patch version. For full compatibility with Puppet, this implies
that you will be using Puppet 3.x, as is the case for most new projects.

http://docs.puppetlabs.com/guides/platforms.html#ruby-versions
Gemfile for Puppet/Facter and ignore Gemfile.lock

This will, by default, install the latest minor version of Puppet 3.1.x and
Facter 1.6.x for local development purposes.

These versions can be overridden with environment variables so that tests
can be run against a matrix of different Puppet, Facter, and Ruby versions.
In order to do this, `Gemfile.lock` which pins specific versions, has been
omitted and added to `.gitignore`. The major version pinning is done using
Bundler's `~>` notation.

We might want to consider upgrading to Facter 1.7, however it is probably
not worth evaluating Puppet 3.2 just yet.
Add librarian-puppet to Gemfile

A bundler-like utility for pulling in first and third party Puppet modules
and their respective dependencies. Major version pinned at 0.9.x
Add testing utilities to Gemfile

Once again pinning major versions.

- rake: Scripted task execution.
- puppet-lint: Style guide conformity for Puppet manifests.
- rspec-puppet: Specification testing for Puppet code.
- puppetlabs_spec_helper: Required (non-explicitly) by rspec-puppet.
Basic Rakefile and directory structure

Skeleton for rake tasks to be broken out into individual files in
`lib/tasks/` to prevent clutter in the main `Rakefile`.
Rake task for puppet-lint

Imports the rake task that ships with puppet-lint. Added to our `:default`
task, so that it will be called by a simple `rake` command.

Excludes the directory `vendor/` to prevent third-party code from being
flagged. They should have their own project-specific checks.

There's no need to `.gitkeep` the `lib/tasks/` directory anymore now that it
has contents.
Ignore .bundle/ and vendor/ directories

These are created by Bundler - depending on your local configuration. They
should never be comitted to this repo.
Directory structure for Puppet manifests/modules

These should be quite minimal if we're relying on librarian-puppet to pull
in modules and hiera as an ENC-alike.
Travis CI tests for Puppet and Ruby versions

Add matrix tests for our targetted version (Puppet 3.1 on Ruby 1.9.3) and
future versions (Puppet 3.2 on Ruby HEAD). The latter are allowed to fail,
as an indicator of what may be to come.

Omitting older versions of Puppet and Ruby for the moment. We could also
add future versions of Facter in here.

The default rake task will be run. Which currently only contains lint.
Move excluded paths to Rakefile for re-use

Other tasks will want to use this to ignore vendored code. A variable in
`Rakefile` won't be accessible to the `:lint` task. But a funtion is.
Port syntax check rake tasks for GOV.UK repo

Syntax checks for Puppet manifests and templates. Adapted to use the
`exclude_paths` function from 59cf75f. Properly namespaced under `syntax:*`,
with an alias that calls both. Syntax comes before lint, in order or
importance.

Ideally these should be split out to a gem. Which will enable us to pull in
newer versions easily. For example, IDA have some much older copies of these
scripts which don't catch warnings, but now easy way to be notified of
updates or merge them in.

I've removed the `$stderr.puts` progress messages for the moment. There
might be a neater way to achieve those.
Add most basic Puppetfile and Puppetfile.lock

Contains URL for PuppetLabs Forge.
Include puppetlabs/stdlib

Useful standard libaries for Puppet. Version is fixed in `Puppetfile.lock`.
Switch to puppet-syntax

Rake tasks for syntax checking of Puppet manifests and templates have been
externalised as a gem. They can now be versioned and upgraded more freely.
Move third-party modules to vendor/modules

Ensures that they are kept separate. First party modules can be committed to
this repo, on the basis that they are too small, trivial, or organisation
specific, to break out with librarian.

Destructive is set to true. Since this path shouldn't contain any content
that isn't managed directly by librarian-puppet.

/cc @nickstenning @samjsharpe
Add Gemfile.lock but remove it for TravisCI builds

The lock file is desireable for consistency during deployments. However we
need to remove it for CI builds so that versions can be sourced from
environment variables. This seems like the best balance.
Simplest possible Vagrantfile

Vagrant >= 1.1, VirtualBox, single VM, using upstream Ubuntu 12.04 box, and
referencing our Puppet manifest/module layout. Internal modules take
precedence over vendored.
Add three (dummy) nodes to the Vagrantfile

Will create three VMs. As an indication of multi-VM support in Vagrant.
Vagrant DNS proxy for VirtualBox

Use VirtualBox's builtin DNS proxy server. This ensures that the guest
doesn't see the real nameservers from the host's network, and will continue
to work when the host moves between physical locations. Cribbed from GOV.UK