Convert GOV.UK VeeWee Precise VM config to Packer

Use the [veewee-to-packer] gem to convert the VeeWee configuration for
GOV.UK Ubuntu Precise development boxes to [Packer]'s configuration
format.

    » gem list veewee-to-packer
    *** LOCAL GEMS ***
    veewee-to-packer (0.3.0)

    veewee-to-packer common/definition_precise64.rb

The only error during conversion was:

    There were some non-critical warnings during the conversion process.
    Your template will function despite these warnings, but they're noted
    here so you can understand some aspects of the Veewee definition that
    may not have carried over perfectly to the Packer template:

    * ':postinstall_timeout' doesn't exist in Packer.

This should not present an issue.

[veewee-to-packer]: https://github.com/mitchellh/veewee-to-packer
[packer]: http://www.packer.io/
Fix Packer errors

The converted VeeWee configuration (see previous commit) failed Packer's
validator. Fix this using `packer fix`, which then shows another error
which we'll tackle next.

    matt➜~/govuk/boxes(packer)» packer validate output/template.json
    Failed to create build 'virtualbox':

    No builder returned for name: virtualbox
    matt➜~/govuk/boxes(packer)» packer fix output/template.json > output/temp.json
    matt➜~/govuk/boxes(packer✗)» mv output/temp.json output/template.json
    matt➜~/govuk/boxes(packer✗)» packer validate output/template.json
    Failed to parse template: 2 error(s) occurred:

    * provisioner 1: build 'virtualbox' not found for override
    * provisioner 1: build 'vmware' not found for override
    matt➜~/govuk/boxes(packer✗)»

The main changes here appear to be the sort order of the hash keys and
the name of the VirtualBox builder, whose name changed from `virtualbox`
to `virtualbox-iso` in Packer version 0.5.0 ([changelog]).

Note that the version of Packer I'm using is `0.7.1`.

[changelog]: https://github.com/mitchellh/packer/blob/master/CHANGELOG.md#050-12302013
Fix Packer validation errors

In the previous commit, `packer fix` amended the names of the Packer
builders in use, e.g. `virtualbox` became `virtualbox-iso`. It seems
`packer fix` missed the builder names in the `override` hash, so we
change them here to fix the error.

This configuration now validates successfully:

    matt➜govuk/boxes/output(packer✗)» packer validate template.json
    Template validated successfully.

I was able to successfully build a Virtualbox image using this
configuration by running:

    packer build -only=virtualbox-iso template.json

...although I cannot test that using Vagrant until I add a Vagrant
post-processor for Packer.
Add Vagrant as a Packer post-processor

This will cause Vagrant to output a `.box` template for use with
Vagrant.

For more info, please see:
http://www.packer.io/docs/post-processors/vagrant.html
Add names to Packer builds

...so it's clearer which is which.
Remove Packer overrides

These overrides where a product of the conversion to Packer from our
VeeWee scripts using the `veewee-to-packer` gem.

They both do the same thing so we can remove the overrides.
Add Packer builds for Ubuntu Trusty LTS

These were generated by copying the Ubuntu Precise configurations
verbatim, then:

  - updating the build names accordingly
  - updating the `iso_checksum` and `iso_url` values as per the VeeWee
    definition for Trusty in `common/definition_trusty64.rb` in this
    repo.
Remove Packer boot_wait from config

The default for `boot_wait` for the `virtualbox-iso` and `vmware-iso`
builders is 10 seconds, so we may as well remove this setting from our
configuration to reduce clutter.
Remove ssh_port from Packer configuration file

The default for `ssh_port` is `22`, so remove these lines to reduce
clutter.
Leave ssh_wait_timeout at Packer default

Packer's default for `ssh_wait_timeout` is 20 minutes, which should be
more than enough. The current setting, for 166 minutes, is probably
longer than we should be willing to wait for.
Use Packer variable to reduce duplication

Packer does not provide an easy way to reduce duplication between
templates; it does not support YAML for example (YAML anchors could
serve this purpose) and I'd rather not use a YAML-to-JSON preprocessor.

It does allow for user-defined variables that can be used in the JSON
template however, so removes duplication where possible using variables.

Note that we don't replace `boot_command` with a variable because it
contains variables itself which wouldn't be evaluated if we were to make
it into a variable.
Delete VeeWee scripts and update README

This commit removes the now deprecated VeeWee configuration and updates
the `README` explaining how to use Packer.

Note that this commit removes the `Makefile`; the relevant task left in
the Makefile was the one to upload the box templates to Amazon S3, but
I've moved this command to `README.md`. I prefer that to leaving it in
the Makefile as I think it's good to expose the underlying command in
this case.

We also move the contents of `output/` into the repository's root
directory and rename `template.json` to `templates.json` to make clear
that it contains multiple templates.
Ignore `packer_cache/` directory

Add `packer_cache/` to `.gitignore`. This directory is used by Packer
when building templates but we don't need to commit this data to SCM.
Remove dead code from preseed.cfg

Remove dead code and outdated or unnecessary comments from
`preseed.cfg`.

We can always retrieve this code from Git's commit history if we decide
later that any of it is useful. But we shouldn't leave it here to rot in
the meantime.
Use maximum compression level for Vagrant boxes

Use compression level `9` for Vagrant boxes, which should result in
smaller file sizes and thus faster downloads for anyone using these
boxes.

The default compression level is `6`.
Conform to our Vagrant box naming convention
Add back Hiera eYAML GPG

Originally added in fc0177, this was lost in 3657fa0 during a rebase
against master. Add it back here.
Instruct packer to upload vmware-tools

Our postinstall script expects to find the vmware-tools iso at
/home/vagrant/linux.iso

Packer has two relevant parameters:

    tools_upload_flavor (string) - The flavor of the VMware Tools ISO to
    upload into the VM. Valid values are "darwin", "linux", and
    "windows". By default, this is empty, which means VMware tools won't
    be uploaded.

    tools_upload_path (string) - The path in the VM to upload the VMware
    tools. This only takes effect if tools_upload_flavor is non-empty.
    This is a configuration template that has a single valid variable:
    Flavor, which will be the value of tools_upload_flavor. By default
    the upload path is set to {{.Flavor}}.iso.

By setting `tools_upload_flavor` to "linux", we get the correct ISO in
/home/vagrant/linux.iso by virtue of the default value of
`tools_upload_path`
Merge pull request #12 from alphagov/packer

[#79259864] Convert VeeWee scripts to Packer