2016-06-10 17:39:41 -04:00
|
|
|
---
|
2017-06-14 21:04:16 -04:00
|
|
|
description: |
|
2018-10-26 20:02:51 -04:00
|
|
|
The manifest post-processor writes a JSON file with the build artifacts and IDs
|
|
|
|
from a packer run.
|
2016-06-10 17:39:41 -04:00
|
|
|
layout: docs
|
2017-06-14 21:04:16 -04:00
|
|
|
page_title: 'Manifest - Post-Processors'
|
|
|
|
sidebar_current: 'docs-post-processors-manifest'
|
2017-03-25 18:13:52 -04:00
|
|
|
---
|
2016-06-10 17:39:41 -04:00
|
|
|
|
|
|
|
# Manifest Post-Processor
|
|
|
|
|
|
|
|
Type: `manifest`
|
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
The manifest post-processor writes a JSON file with a list of all of the
|
|
|
|
artifacts packer produces during a run. If your packer template includes
|
|
|
|
multiple builds, this helps you keep track of which output artifacts (files,
|
|
|
|
AMI IDs, docker containers, etc.) correspond to each build.
|
2016-06-10 17:39:41 -04:00
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
The manifest post-processor is invoked each time a build completes and
|
|
|
|
*updates* data in the manifest file. Builds are identified by name and type,
|
|
|
|
and include their build time, artifact ID, and file list.
|
2016-06-10 17:39:41 -04:00
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
If packer is run with the `-force` flag the manifest file will be truncated
|
|
|
|
automatically during each packer run. Otherwise, subsequent builds will be
|
|
|
|
added to the file. You can use the timestamps to see which is the latest
|
|
|
|
artifact.
|
2016-06-10 17:39:41 -04:00
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
You can specify manifest more than once and write each build to its own file,
|
|
|
|
or write all builds to the same file. For simple builds manifest only needs to
|
|
|
|
be specified once (see below) but you can also chain it together with other
|
|
|
|
post-processors such as Docker and Artifice.
|
2016-06-10 17:39:41 -04:00
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
### Optional:
|
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
- `output` (string) The manifest will be written to this file. This defaults
|
|
|
|
to `packer-manifest.json`.
|
|
|
|
- `strip_path` (boolean) Write only filename without the path to the manifest
|
|
|
|
file. This defaults to false.
|
2016-06-10 17:39:41 -04:00
|
|
|
|
|
|
|
### Example Configuration
|
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
You can simply add `{"type":"manifest"}` to your post-processor section. Below
|
|
|
|
is a more verbose example:
|
2016-06-10 17:39:41 -04:00
|
|
|
|
2017-06-14 21:04:16 -04:00
|
|
|
``` json
|
2016-06-10 17:39:41 -04:00
|
|
|
{
|
|
|
|
"post-processors": [
|
|
|
|
{
|
|
|
|
"type": "manifest",
|
2016-11-21 18:35:57 -05:00
|
|
|
"output": "manifest.json",
|
2016-08-09 10:41:21 -04:00
|
|
|
"strip_path": true
|
2016-06-10 17:39:41 -04:00
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
2017-10-05 16:40:20 -04:00
|
|
|
|
|
|
|
An example manifest file looks like:
|
|
|
|
|
|
|
|
``` json
|
|
|
|
{
|
|
|
|
"builds": [
|
|
|
|
{
|
|
|
|
"name": "docker",
|
|
|
|
"builder_type": "docker",
|
2017-10-05 19:29:38 -04:00
|
|
|
"build_time": 1507245986,
|
2017-10-05 16:40:20 -04:00
|
|
|
"files": [
|
|
|
|
{
|
|
|
|
"name": "packer_example",
|
2017-10-05 19:29:38 -04:00
|
|
|
"size": 102219776
|
2017-10-05 16:40:20 -04:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"artifact_id": "Container",
|
|
|
|
"packer_run_uuid": "6d5d3185-fa95-44e1-8775-9e64fe2e2d8f"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"last_run_uuid": "6d5d3185-fa95-44e1-8775-9e64fe2e2d8f"
|
|
|
|
}
|
|
|
|
```
|
2017-10-05 19:29:38 -04:00
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
If the build is run again, the new build artifacts will be added to the
|
|
|
|
manifest file rather than replacing it. It is possible to grab specific build
|
|
|
|
artifacts from the manifest by using `packer_run_uuid`.
|
2017-10-05 19:29:38 -04:00
|
|
|
|
2018-03-13 04:09:00 -04:00
|
|
|
The above manifest was generated with this packer.json:
|
2017-10-24 01:57:22 -04:00
|
|
|
|
2018-10-26 20:02:51 -04:00
|
|
|
``` json
|
2017-10-05 19:29:38 -04:00
|
|
|
{
|
|
|
|
"builders": [
|
|
|
|
{
|
|
|
|
"type": "docker",
|
|
|
|
"image": "ubuntu:latest",
|
|
|
|
"export_path": "packer_example",
|
|
|
|
"run_command": [ "-d", "-i", "-t", "--entrypoint=/bin/bash", "{{.Image}}" ]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"provisioners": [
|
|
|
|
{
|
|
|
|
"type": "shell",
|
|
|
|
"inline": "mkdir /Setup"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"type": "file",
|
|
|
|
"source": "../scripts/dummy_bash.sh",
|
|
|
|
"destination": "/Setup"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"type": "shell",
|
|
|
|
"inline":["ls -alh /Setup/"]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"post-processors": [
|
|
|
|
{
|
|
|
|
"type": "manifest",
|
|
|
|
"output": "manifest.json",
|
|
|
|
"strip_path": true
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|