2013-06-27 11:17:00 -04:00
|
|
|
---
|
2017-06-14 21:04:16 -04:00
|
|
|
description: |
|
|
|
|
The Packer Vagrant post-processor takes a build and converts the artifact into
|
|
|
|
a valid Vagrant box, if it can. This lets you use Packer to automatically
|
2018-10-26 20:02:51 -04:00
|
|
|
create arbitrarily complex Vagrant boxes, and is in fact how the official boxes
|
|
|
|
distributed by Vagrant are created.
|
2015-07-22 22:31:00 -04:00
|
|
|
layout: docs
|
2017-06-14 21:04:16 -04:00
|
|
|
page_title: 'Vagrant - Post-Processors'
|
|
|
|
sidebar_current: 'docs-post-processors-vagrant-box'
|
2017-03-25 18:13:52 -04:00
|
|
|
---
|
2013-06-27 11:17:00 -04:00
|
|
|
|
|
|
|
# Vagrant Post-Processor
|
|
|
|
|
|
|
|
Type: `vagrant`
|
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
The Packer Vagrant post-processor takes a build and converts the artifact into
|
|
|
|
a valid [Vagrant](https://www.vagrantup.com) box, if it can. This lets you use
|
|
|
|
Packer to automatically create arbitrarily complex Vagrant boxes, and is in
|
|
|
|
fact how the official boxes distributed by Vagrant are created.
|
2013-06-27 11:17:00 -04:00
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
If you've never used a post-processor before, please read the documentation on
|
2018-10-26 20:02:51 -04:00
|
|
|
[using post-processors](/docs/templates/post-processors.html) in templates.
|
|
|
|
This knowledge will be expected for the remainder of this document.
|
2013-06-27 11:17:00 -04:00
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
Because Vagrant boxes are
|
2018-10-26 20:02:51 -04:00
|
|
|
[provider-specific](https://docs.vagrantup.com/v2/boxes/format.html), the
|
|
|
|
Vagrant post-processor is hardcoded to understand how to convert the artifacts
|
|
|
|
of certain builders into proper boxes for their respective providers.
|
2013-06-27 11:17:00 -04:00
|
|
|
|
|
|
|
Currently, the Vagrant post-processor can create boxes for the following
|
|
|
|
providers.
|
|
|
|
|
2017-06-14 21:04:16 -04:00
|
|
|
- AWS
|
2018-08-09 08:14:14 -04:00
|
|
|
- Azure
|
2017-06-14 21:04:16 -04:00
|
|
|
- DigitalOcean
|
2018-12-26 23:25:58 -05:00
|
|
|
- Docker
|
2017-06-14 21:04:16 -04:00
|
|
|
- Hyper-V
|
2018-03-06 15:02:19 -05:00
|
|
|
- LXC
|
2017-06-14 21:04:16 -04:00
|
|
|
- Parallels
|
|
|
|
- QEMU
|
|
|
|
- VirtualBox
|
|
|
|
- VMware
|
2013-06-27 11:17:00 -04:00
|
|
|
|
2017-06-14 21:04:16 -04:00
|
|
|
-> **Support for additional providers** is planned. If the Vagrant
|
2015-07-22 22:31:00 -04:00
|
|
|
post-processor doesn't support creating boxes for a provider you care about,
|
|
|
|
please help by contributing to Packer and adding support for it.
|
2013-06-27 11:17:00 -04:00
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
The simplest way to use the post-processor is to just enable it. No
|
2015-07-22 22:31:00 -04:00
|
|
|
configuration is required by default. This will mostly do what you expect and
|
|
|
|
will build functioning boxes for many of the built-in builders of Packer.
|
2013-06-27 11:17:00 -04:00
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
However, if you want to configure things a bit more, the post-processor does
|
|
|
|
expose some configuration options. The available options are listed below, with
|
|
|
|
more details about certain options in following sections.
|
2013-06-27 11:17:00 -04:00
|
|
|
|
2017-10-16 14:23:33 -04:00
|
|
|
- `compression_level` (number) - An integer representing the compression
|
2015-07-22 23:25:58 -04:00
|
|
|
level to use when creating the Vagrant box. Valid values range from 0 to 9,
|
|
|
|
with 0 being no compression and 9 being the best compression. By default,
|
|
|
|
compression is enabled at level 6.
|
2013-12-19 17:10:28 -05:00
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
- `include` (array of strings) - Paths to files to include in the Vagrant
|
|
|
|
box. These files will each be copied into the top level directory of the
|
|
|
|
Vagrant box (regardless of their paths). They can then be used from the
|
|
|
|
Vagrantfile.
|
2013-12-19 17:10:28 -05:00
|
|
|
|
2019-04-03 16:57:22 -04:00
|
|
|
- `keep_input_artifact` (boolean) - When true, preserve the artifact we use to
|
|
|
|
create the vagrant box. Defaults to `false`, except when you set a cloud
|
|
|
|
provider (e.g. aws, azure, google, digitalocean). In these cases deleting
|
|
|
|
the input artifact would render the vagrant box useless, so we always keep
|
|
|
|
these artifacts -- even if you specifically set
|
|
|
|
`"keep_input_artifact":false`
|
2014-05-04 13:47:40 -04:00
|
|
|
|
2017-06-14 21:04:16 -04:00
|
|
|
- `output` (string) - The full path to the box file that will be created by
|
2015-07-22 23:25:58 -04:00
|
|
|
this post-processor. This is a [configuration
|
2018-10-26 20:02:51 -04:00
|
|
|
template](/docs/templates/engine.html). The variable `Provider` is replaced
|
|
|
|
by the Vagrant provider the box is for. The variable `ArtifactId` is
|
|
|
|
replaced by the ID of the input artifact. The variable `BuildName` is
|
|
|
|
replaced with the name of the build. By default, the value of this config
|
|
|
|
is `packer_{{.BuildName}}_{{.Provider}}.box`.
|
2013-06-27 11:17:00 -04:00
|
|
|
|
2017-06-14 21:04:16 -04:00
|
|
|
- `vagrantfile_template` (string) - Path to a template to use for the
|
2015-07-22 23:25:58 -04:00
|
|
|
Vagrantfile that is packaged with the box.
|
2013-12-19 17:44:15 -05:00
|
|
|
|
|
|
|
## Provider-Specific Overrides
|
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
If you have a Packer template with multiple builder types within it, you may
|
|
|
|
want to configure the box creation for each type a little differently. For
|
|
|
|
example, the contents of the Vagrantfile for a Vagrant box for AWS might be
|
|
|
|
different from the contents of the Vagrantfile you want for VMware. The
|
|
|
|
post-processor lets you do this.
|
2013-12-19 17:44:15 -05:00
|
|
|
|
|
|
|
Specify overrides within the `override` configuration by provider name:
|
|
|
|
|
2017-06-14 21:04:16 -04:00
|
|
|
``` json
|
2013-12-19 17:44:15 -05:00
|
|
|
{
|
2014-10-20 13:55:16 -04:00
|
|
|
"type": "vagrant",
|
|
|
|
"compression_level": 1,
|
|
|
|
"override": {
|
|
|
|
"vmware": {
|
|
|
|
"compression_level": 0
|
2013-12-19 17:44:15 -05:00
|
|
|
}
|
2014-10-20 13:55:16 -04:00
|
|
|
}
|
2013-12-19 17:44:15 -05:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
In the example above, the compression level will be set to 1 except for VMware,
|
|
|
|
where it will be set to 0.
|
2013-12-19 17:44:15 -05:00
|
|
|
|
2018-03-06 15:02:19 -05:00
|
|
|
The available provider names are:
|
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
- `aws`
|
|
|
|
- `azure`
|
|
|
|
- `digitalocean`
|
|
|
|
- `google`
|
|
|
|
- `hyperv`
|
|
|
|
- `parallels`
|
|
|
|
- `libvirt`
|
|
|
|
- `lxc`
|
|
|
|
- `scaleway`
|
|
|
|
- `virtualbox`
|
|
|
|
- `vmware`
|
|
|
|
- `docker`
|
2014-02-21 17:11:24 -05:00
|
|
|
|
|
|
|
## Input Artifacts
|
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
By default, Packer will delete the original input artifact, assuming you only
|
2018-10-26 20:02:51 -04:00
|
|
|
want the final Vagrant box as the result. If you wish to keep the input
|
|
|
|
artifact (the raw virtual machine, for example), then you must configure Packer
|
|
|
|
to keep it.
|
2014-02-21 17:11:24 -05:00
|
|
|
|
2015-07-22 22:31:00 -04:00
|
|
|
Please see the [documentation on input
|
|
|
|
artifacts](/docs/templates/post-processors.html#toc_2) for more information.
|
2018-07-17 10:41:18 -04:00
|
|
|
|
|
|
|
### Docker
|
|
|
|
|
2018-07-19 21:41:26 -04:00
|
|
|
Using a Docker input artifact will include a reference to the image in the
|
|
|
|
`Vagrantfile`. If the image tag is not specified in the post-processor, the
|
|
|
|
sha256 hash will be used.
|
2018-07-17 16:10:53 -04:00
|
|
|
|
2018-07-19 21:41:26 -04:00
|
|
|
The following Docker input artifacts are supported:
|
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
- `docker` builder with `commit: true`, always uses the sha256 hash
|
|
|
|
- `docker-import`
|
|
|
|
- `docker-tag`
|
|
|
|
- `docker-push`
|
2018-11-04 08:32:40 -05:00
|
|
|
|
|
|
|
### QEMU/libvirt
|
|
|
|
|
2019-01-11 17:06:15 -05:00
|
|
|
The `libvirt` provider supports QEMU artifacts built using any these
|
|
|
|
accelerators: none, kvm, tcg, or hvf.
|
2019-04-19 18:17:37 -04:00
|
|
|
|
|
|
|
### VMWare
|
|
|
|
|
|
|
|
If you are using the Vagrant post-processor with the `vmware-esxi` builder, you
|
|
|
|
must export the builder artifact locally; the Vagrant post-processor will
|
|
|
|
not work on remote artifacts.
|