Don't upgrade Puppet/Ruby during bootstrap.
[#54676118] Change path and exec method for Puppet

Replace Vagrant's builtin provisioner for Puppet with our own shared folder
and shell script.

This will allow us to use a consistent filesystem path in Vagrant and
production. Which is useful for hiera, in particular, because unlike
extlookup the `datadir` path can't be computed relative to another Puppet
variable.

I foresee the production deployment being a pyFabric task that does a `git
checkout-index` of this repo into the same path, with any other `hierdata/`
files copied over the top, then the same script(s) run.
[#54676118] Make hieradata relative to manifestdir

Reduce our dependency on having hardcoded absolute paths everywhere by
making hiera's `datadir` relative to another Puppet variable that we can
feed in at runtime. Like we used to for extlookup.

This makes me happy, because I didn't think it was possible.
[#54676118] Make all Puppet paths relative

With hiera's datadir now relative, we can make all other paths relative.

This will allow use to test the pyFabric task deploying to Vagrant VMs
without overwriting the real repository previously in `/opt/puppet`.
[#54676118] puppet-apply cd into PATH

Have `puppet-apply` cd into the right directory rather than making the
`Vagrantfile` do it. This will also make pyFabric deployment easier.
Use our new puppet puppet module and set version

1. We are now using the official Puppetlabs apt module instead of definining a
repository resource ourselves.
2. We're now using HTTP for the repository URL rather than HTTPS which didn't
work because the base VM on Skyscape doesn't have an apt_transport_https
package.
Ignore temporary and vagrant files
Give all accounts sudo

Bump to latest puppet-gds_accounts which allows multiple groups, and add all our
users to the sudo group as well as the gds group.

We're taking this approach rather than changing the sudoers file because we're
not happy with the module currently used for that in ci-puppet. We've raised a
story to look at how best to change the sudoers file instead:
https://www.pivotaltracker.com/story/show/55378608
Original /etc/sudoers file from Ubuntu 12.04
Adding arnoudj/sudo to manage sudoers
Include lvm2 and rsync

Added a simple module to manage packages.
Mount a disk for the mirrored data using Puppet

For this we need to include the ext4mount module.
Use the correct mount device
Moving all mirror environment data into one file
Add nginx module

Using the original module rather than the one we have forked in alphagov,
because the latter has hidden dependencies on e.g. SSL. We don't require the
changes in the forked one for this project.

TODO
- We need to fix server_tokens - the version of nginx is currently returned in
  the headers
- We need to change the default vhost content which currently serves the default
  nginx page
Change server name to agreed one
Add curl to included packages
[#55482568] Use our forked puppet-sudo module

The permissions for /etc/sudoers are set incorrectly by this module, so I have
changed that in our forked version and we are using that for the time being.

I've submitted a PR to the original module:
https://github.com/arnoudj/puppet-sudo/pull/10
If the PR is merged we can flip back to using it.
Merge branch 'master' into 54676186-mirror-security

Conflicts resolved:
	Puppetfile
	Puppetfile.lock
	hieradata/common.yaml