---
layout: "docs"
---

# Packer Terminology

There are a handful of terms used throughout the Packer documentation where
the meaning may not be immediately obvious if you haven't used Packer before.
Luckily, there are relatively few. This page documents all the terminology
required to understand and use Packer. The terminology is in alphabetical
order for easy referencing.

<a class="term" id="term-artifact"></a>
**Artifacts** are the results of a single [build](#term-build), and are
usually a set of IDs or files to represent a machine image. Every [builder](#term-builder)
produces a single artifact. As an example, in the case of the Amazon EC2 builder,
the artifact is a set of AMI IDs (one per region). For the VMware builder,
the artifact is a directory of files comprising the created virtual machine.

<a class="term" id="term-build"></a>
**Builds** are a single task that eventually produces an image for a single
platform. Multiple builds run in parallel. Example usage in a sentence: "The Packer build
produced an AMI to run our web application." Or: "Packer is running the builds
now for VMware, AWS, and VirtualBox."

<a class="term" id="term-builder"></a>
**Builders** are components of Packer that are able to create a machine
image for a single platform. Builders read in some configuration and use
that to run and generate a machine image. A builder is invoked as part of a [build](#term-build)
in order to create the actual resulting images. Example builders include
VirtualBox, VMware, and Amazon EC2. Builders can be created and added to
Packer in the form of plugins.

<a class="term" id="term-command"></a>
**Commands** are sub-commands for the `packer` program that perform some
job. An example some command is "build", which is invoked as `packer build`.
Packer ships with a set of commands out of the box in order to define
its [command-line interface](#). Commands can also be created and added to
Packer in the form of plugins.

<a class="term" id="term-post-processor"></a>
**Post-processors** are components of Packer that take the result of
a [builder](#term-builder) or another post-processor and process that to
create a new [artifact](#term-artifact). Examples of post-processors are
compress to compress artifacts, upload to upload artifacts, etc.

<a class="term" id="term-provisioner"></a>
**Provisioners** are components of Packer that install and configure
software within a running machine prior to that machine being turned
into a static image. They perform the major work of making the image contain
useful software. Example provisioners include shell scripts, Chef, Puppet,
etc.

<a class="term" id="term-template"></a>
**Templates** are JSON files which define one or more [builds](#term-build)
by configuring the various components of Packer. Packer is able to read a
template and use that information to create multiple machine images in
parallel.
