`.
Custom commands allow you to add new commands to Packer to perhaps
diff --git a/website/source/docs/extend/developing-plugins.html.markdown b/website/source/docs/extend/developing-plugins.html.markdown
index 6f73030a9..d67470930 100644
--- a/website/source/docs/extend/developing-plugins.html.markdown
+++ b/website/source/docs/extend/developing-plugins.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Developing Plugins"
+description: |-
+ This page will document how you can develop your own Packer plugins. Prior to reading this, it is assumed that you're comfortable with Packer and also know the basics of how Plugins work, from a user standpoint.
---
# Developing Plugins
diff --git a/website/source/docs/extend/plugins.html.markdown b/website/source/docs/extend/plugins.html.markdown
index dbef6c5d9..12db22150 100644
--- a/website/source/docs/extend/plugins.html.markdown
+++ b/website/source/docs/extend/plugins.html.markdown
@@ -1,11 +1,13 @@
---
layout: "docs"
page_title: "Packer Plugins - Extend Packer"
+description: |-
+ Packer Plugins allow new functionality to be added to Packer without modifying the core source code. Packer plugins are able to add new commands, builders, provisioners, hooks, and more. In fact, much of Packer itself is implemented by writing plugins that are simply distributed with Packer. For example, all the commands, builders, provisioners, and more that ship with Packer are implemented as Plugins that are simply hardcoded to load with Packer.
---
# Packer Plugins
-Plugins allow new functionality to be added to Packer without
+Packer Plugins allow new functionality to be added to Packer without
modifying the core source code. Packer plugins are able to add new
commands, builders, provisioners, hooks, and more. In fact, much of Packer
itself is implemented by writing plugins that are simply distributed with
diff --git a/website/source/docs/extend/post-processor.html.markdown b/website/source/docs/extend/post-processor.html.markdown
index 1d14b7485..204cc593b 100644
--- a/website/source/docs/extend/post-processor.html.markdown
+++ b/website/source/docs/extend/post-processor.html.markdown
@@ -1,11 +1,13 @@
---
layout: "docs"
page_title: "Custom Post-Processor Development"
+description: |-
+ Packer Post-processors are the components of Packer that transform one artifact into another, for example by compressing files, or uploading them.
---
# Custom Post-Processor Development
-Post-processors are the components of Packer that transform one artifact
+Packer Post-processors are the components of Packer that transform one artifact
into another, for example by compressing files, or uploading them.
In the compression example, the transformation would be taking an artifact
diff --git a/website/source/docs/extend/provisioner.html.markdown b/website/source/docs/extend/provisioner.html.markdown
index 9d63e562a..cb73cccd2 100644
--- a/website/source/docs/extend/provisioner.html.markdown
+++ b/website/source/docs/extend/provisioner.html.markdown
@@ -1,11 +1,13 @@
---
layout: "docs"
page_title: "Custom Provisioner Development"
+description: |-
+ Packer Provisioners are the components of Packer that install and configure software into a running machine prior to turning that machine into an image. An example of a provisioner is the shell provisioner, which runs shell scripts within the machines.
---
# Custom Provisioner Development
-Provisioners are the components of Packer that install and configure
+Packer Provisioners are the components of Packer that install and configure
software into a running machine prior to turning that machine into an
image. An example of a provisioner is the [shell provisioner](/docs/provisioners/shell.html),
which runs shell scripts within the machines.
diff --git a/website/source/docs/index.html.markdown b/website/source/docs/index.html.markdown
index 738030663..5894d17db 100644
--- a/website/source/docs/index.html.markdown
+++ b/website/source/docs/index.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Packer Documentation"
+description: |-
+ Welcome to the Packer documentation! This documentation is more of a reference guide for all available features and options in Packer. If you're just getting started with Packer, please start with the introduction and getting started guide instead.
---
# Packer Documentation
diff --git a/website/source/docs/installation.html.markdown b/website/source/docs/installation.html.markdown
index fd09d3197..c0aee9528 100644
--- a/website/source/docs/installation.html.markdown
+++ b/website/source/docs/installation.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Install Packer"
+description: |-
+ Packer must first be installed on the machine you want to run it on. To make installation easy, Packer is distributed as a binary package for all supported platforms and architectures. This page will not cover how to compile Packer from source, as that is covered in the README and is only recommended for advanced users.
---
# Install Packer
diff --git a/website/source/docs/machine-readable/command-build.html.markdown b/website/source/docs/machine-readable/command-build.html.markdown
index aac2713f9..836a61ef2 100644
--- a/website/source/docs/machine-readable/command-build.html.markdown
+++ b/website/source/docs/machine-readable/command-build.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs_machine_readable"
page_title: "Command: build - Machine-Readable Reference"
+description: |-
+ These are the machine-readable types that exist as part of the output of `packer build`.
---
# Build Command Types
diff --git a/website/source/docs/machine-readable/command-inspect.html.markdown b/website/source/docs/machine-readable/command-inspect.html.markdown
index 3d24c884d..3f8bbb852 100644
--- a/website/source/docs/machine-readable/command-inspect.html.markdown
+++ b/website/source/docs/machine-readable/command-inspect.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs_machine_readable"
page_title: "Command: inspect - Machine-Readable Reference"
+description: |-
+ These are the machine-readable types that exist as part of the output of `packer inspect`.
---
# Inspect Command Types
diff --git a/website/source/docs/machine-readable/command-version.html.markdown b/website/source/docs/machine-readable/command-version.html.markdown
index a84a49762..a7029b627 100644
--- a/website/source/docs/machine-readable/command-version.html.markdown
+++ b/website/source/docs/machine-readable/command-version.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs_machine_readable"
page_title: "Command: version - Machine-Readable Reference"
+description: |-
+ These are the machine-readable types that exist as part of the output of `packer version`.
---
# Version Command Types
diff --git a/website/source/docs/machine-readable/general.html.markdown b/website/source/docs/machine-readable/general.html.markdown
index 8f604e56e..05eb2699a 100644
--- a/website/source/docs/machine-readable/general.html.markdown
+++ b/website/source/docs/machine-readable/general.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs_machine_readable"
page_title: "General Types - Machine-Readable Reference"
+description: |-
+ These are the machine-readable types that can appear in almost any machine-readable output and are provided by Packer core itself.
---
# General Types
diff --git a/website/source/docs/machine-readable/index.html.markdown b/website/source/docs/machine-readable/index.html.markdown
index f0ac3e112..d26106b15 100644
--- a/website/source/docs/machine-readable/index.html.markdown
+++ b/website/source/docs/machine-readable/index.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs_machine_readable"
page_title: "Machine-Readable Reference"
+description: |-
+ This is the reference for the various message categories for Packer machine-readable output. Please read that page if you're unfamiliar with the general format and usage for the machine-readable output.
---
# Machine-Readable Reference
diff --git a/website/source/docs/other/core-configuration.html.markdown b/website/source/docs/other/core-configuration.html.markdown
index ea7d7f6d6..3727af061 100644
--- a/website/source/docs/other/core-configuration.html.markdown
+++ b/website/source/docs/other/core-configuration.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Core Configuration"
+description: |-
+ There are a few configuration settings that affect Packer globally by configuring the core of Packer. These settings all have reasonable defaults, so you generally don't have to worry about it until you want to tweak a configuration. If you're just getting started with Packer, don't worry about core configuration for now.
---
# Core Configuration
diff --git a/website/source/docs/other/debugging.html.markdown b/website/source/docs/other/debugging.html.markdown
index ab82cf3b6..714a87264 100644
--- a/website/source/docs/other/debugging.html.markdown
+++ b/website/source/docs/other/debugging.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Debugging Packer"
+description: |-
+ Packer strives to be stable and bug-free, but issues inevitably arise where certain things may not work entirely correctly, or may not appear to work correctly. In these cases, it is sometimes helpful to see more details about what Packer is actually doing.
---
# Debugging Packer
diff --git a/website/source/docs/other/environmental-variables.html.markdown b/website/source/docs/other/environmental-variables.html.markdown
index 8b2b8956e..318e25e25 100644
--- a/website/source/docs/other/environmental-variables.html.markdown
+++ b/website/source/docs/other/environmental-variables.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Environmental Variables for Packer"
+description: |-
+ Packer uses a variety of environmental variables.
---
# Environmental Variables for Packer
diff --git a/website/source/docs/post-processors/compress.html.markdown b/website/source/docs/post-processors/compress.html.markdown
index 56df31700..ea3b9c7ac 100644
--- a/website/source/docs/post-processors/compress.html.markdown
+++ b/website/source/docs/post-processors/compress.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "compress Post-Processor"
+description: |-
+ The Packer compress post-processor takes an artifact with files (such as from VMware or VirtualBox) and gzip compresses the artifact into a single archive.
---
# Compress Post-Processor
Type: `compress`
-The compress post-processor takes an artifact with files (such as from
+The Packer compress post-processor takes an artifact with files (such as from
VMware or VirtualBox) and gzip compresses the artifact into a single
archive.
diff --git a/website/source/docs/post-processors/docker-import.html.markdown b/website/source/docs/post-processors/docker-import.html.markdown
index 23f29e243..c2d7bba80 100644
--- a/website/source/docs/post-processors/docker-import.html.markdown
+++ b/website/source/docs/post-processors/docker-import.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "docker-import Post-Processor"
+description: |-
+ The Packer Docker import post-processor takes an artifact from the docker builder and imports it with Docker locally. This allows you to apply a repository and tag to the image and lets you use the other Docker post-processors such as docker-push to push the image to a registry.
---
# Docker Import Post-Processor
Type: `docker-import`
-The Docker import post-processor takes an artifact from the
+The Packer Docker import post-processor takes an artifact from the
[docker builder](/docs/builders/docker.html) and imports it with Docker
locally. This allows you to apply a repository and tag to the image
and lets you use the other Docker post-processors such as
diff --git a/website/source/docs/post-processors/docker-push.html.markdown b/website/source/docs/post-processors/docker-push.html.markdown
index 92d233f58..2f7ae3e92 100644
--- a/website/source/docs/post-processors/docker-push.html.markdown
+++ b/website/source/docs/post-processors/docker-push.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Docker Push Post-Processor"
+description: |-
+ The Packer Docker push post-processor takes an artifact from the docker-import post-processor and pushes it to a Docker registry.
---
# Docker Push Post-Processor
Type: `docker-push`
-The Docker push post-processor takes an artifact from the
+The Packer Docker push post-processor takes an artifact from the
[docker-import](/docs/post-processors/docker-import.html) post-processor
and pushes it to a Docker registry.
diff --git a/website/source/docs/post-processors/docker-save.html.markdown b/website/source/docs/post-processors/docker-save.html.markdown
index 3c4f87634..ca03dfcf6 100644
--- a/website/source/docs/post-processors/docker-save.html.markdown
+++ b/website/source/docs/post-processors/docker-save.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "docker-save Post-Processor"
+description: |-
+ The Packer Docker Save post-processor takes an artifact from the docker builder that was committed and saves it to a file. This is similar to exporting the Docker image directly from the builder, except that it preserves the hierarchy of images and metadata.
---
# Docker Save Post-Processor
Type: `docker-save`
-The Docker Save post-processor takes an artifact from the
+The Packer Docker Save post-processor takes an artifact from the
[docker builder](/docs/builders/docker.html) that was committed
and saves it to a file. This is similar to exporting the Docker image
directly from the builder, except that it preserves the hierarchy of
diff --git a/website/source/docs/post-processors/docker-tag.html.markdown b/website/source/docs/post-processors/docker-tag.html.markdown
index a66d95717..7b8b92722 100644
--- a/website/source/docs/post-processors/docker-tag.html.markdown
+++ b/website/source/docs/post-processors/docker-tag.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "docker-tag Post-Processor"
+description: |-
+ The Packer Docker Tag post-processor takes an artifact from the docker builder that was committed and tags it into a repository. This allows you to use the other Docker post-processors such as docker-push to push the image to a registry.
---
# Docker Tag Post-Processor
Type: `docker-tag`
-The Docker Tag post-processor takes an artifact from the
+The Packer Docker Tag post-processor takes an artifact from the
[docker builder](/docs/builders/docker.html) that was committed
and tags it into a repository. This allows you to use the other
Docker post-processors such as
diff --git a/website/source/docs/post-processors/vagrant-cloud.html.markdown b/website/source/docs/post-processors/vagrant-cloud.html.markdown
index 83b7c8e0a..8a668f5d0 100644
--- a/website/source/docs/post-processors/vagrant-cloud.html.markdown
+++ b/website/source/docs/post-processors/vagrant-cloud.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Vagrant Cloud Post-Processor"
+description: |-
+ The Packer Vagrant Cloud post-processor receives a Vagrant box from the `vagrant` post-processor and pushes it to Vagrant Cloud. Vagrant Cloud hosts and serves boxes to Vagrant, allowing you to version and distribute boxes to an organization in a simple way.
---
# Vagrant Cloud Post-Processor
Type: `vagrant-cloud`
-The Vagrant Cloud post-processor receives a Vagrant box from the `vagrant`
+The Packer Vagrant Cloud post-processor receives a Vagrant box from the `vagrant`
post-processor and pushes it to Vagrant Cloud. [Vagrant Cloud](https://vagrantcloud.com)
hosts and serves boxes to Vagrant, allowing you to version and distribute
boxes to an organization in a simple way.
diff --git a/website/source/docs/post-processors/vagrant.html.markdown b/website/source/docs/post-processors/vagrant.html.markdown
index 5a26d0352..ab4ca2f86 100644
--- a/website/source/docs/post-processors/vagrant.html.markdown
+++ b/website/source/docs/post-processors/vagrant.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Vagrant Post-Processor"
+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 create arbitrarily complex Vagrant boxes, and is in fact how the official boxes distributed by Vagrant are created.
---
# Vagrant Post-Processor
Type: `vagrant`
-The Vagrant post-processor takes a build and converts the artifact
+The Packer Vagrant post-processor takes a build and converts the artifact
into a valid [Vagrant](http://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
diff --git a/website/source/docs/post-processors/vsphere.html.markdown b/website/source/docs/post-processors/vsphere.html.markdown
index 408d8b327..3ce8ec5f9 100644
--- a/website/source/docs/post-processors/vsphere.html.markdown
+++ b/website/source/docs/post-processors/vsphere.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "vSphere Post-Processor"
+description: |-
+ The Packer vSphere post-processor takes an artifact from the VMware builder and uploads it to a vSphere endpoint.
---
# vSphere Post-Processor
Type: `vsphere`
-The vSphere post-processor takes an artifact from the VMware builder
+The Packer vSphere post-processor takes an artifact from the VMware builder
and uploads it to a vSphere endpoint.
## Configuration
diff --git a/website/source/docs/provisioners/ansible-local.html.markdown b/website/source/docs/provisioners/ansible-local.html.markdown
index 70a45755b..63b98ade4 100644
--- a/website/source/docs/provisioners/ansible-local.html.markdown
+++ b/website/source/docs/provisioners/ansible-local.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Ansible (Local) Provisioner"
+description: |-
+ The `ansible-local` Packer provisioner configures Ansible to run on the machine by Packer from local Playbook and Role files. Playbooks and Roles can be uploaded from your local machine to the remote machine. Ansible is run in local mode via the `ansible-playbook` command.
---
# Ansible Local Provisioner
Type: `ansible-local`
-The `ansible-local` provisioner configures Ansible to run on the machine by
+The `ansible-local` Packer provisioner configures Ansible to run on the machine by
Packer from local Playbook and Role files. Playbooks and Roles can be uploaded
from your local machine to the remote machine. Ansible is run in [local mode](http://docs.ansible.com/playbooks_delegation.html#local-playbooks) via the `ansible-playbook` command.
diff --git a/website/source/docs/provisioners/chef-client.html.markdown b/website/source/docs/provisioners/chef-client.html.markdown
index c54223997..a3403e48e 100644
--- a/website/source/docs/provisioners/chef-client.html.markdown
+++ b/website/source/docs/provisioners/chef-client.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Chef-Client Provisioner"
+description: |-
+ The Chef Client Packer provisioner installs and configures software on machines built by Packer using chef-client. Packer configures a Chef client to talk to a remote Chef Server to provision the machine.
---
# Chef Client Provisioner
Type: `chef-client`
-The Chef Client provisioner installs and configures software on machines built
+The Chef Client Packer provisioner installs and configures software on machines built
by Packer using [chef-client](http://docs.opscode.com/chef_client.html).
Packer configures a Chef client to talk to a remote Chef Server to
provision the machine.
diff --git a/website/source/docs/provisioners/chef-solo.html.markdown b/website/source/docs/provisioners/chef-solo.html.markdown
index a69a7d810..b60096307 100644
--- a/website/source/docs/provisioners/chef-solo.html.markdown
+++ b/website/source/docs/provisioners/chef-solo.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Chef-Solo Provisioner"
+description: |-
+ The Chef solo Packer provisioner installs and configures software on machines built by Packer using chef-solo. Cookbooks can be uploaded from your local machine to the remote machine or remote paths can be used.
---
# Chef Solo Provisioner
Type: `chef-solo`
-The Chef solo provisioner installs and configures software on machines built
+The Chef solo Packer provisioner installs and configures software on machines built
by Packer using [chef-solo](http://docs.opscode.com/chef_solo.html). Cookbooks
can be uploaded from your local machine to the remote machine or remote paths
can be used.
diff --git a/website/source/docs/provisioners/custom.html.markdown b/website/source/docs/provisioners/custom.html.markdown
index c2dd3a527..08df184fd 100644
--- a/website/source/docs/provisioners/custom.html.markdown
+++ b/website/source/docs/provisioners/custom.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Custom Provisioner"
+description: |-
+ Packer is extensible, allowing you to write new provisioners without having to modify the core source code of Packer itself. Documentation for creating new provisioners is covered in the custom provisioners page of the Packer plugin section.
---
# Custom Provisioner
diff --git a/website/source/docs/provisioners/file.html.markdown b/website/source/docs/provisioners/file.html.markdown
index fda01efc2..a8d0daf56 100644
--- a/website/source/docs/provisioners/file.html.markdown
+++ b/website/source/docs/provisioners/file.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "File Provisioner"
+description: |-
+ The file Packer provisioner uploads files to machines built by Packer. The recommended usage of the file provisioner is to use it to upload files, and then use shell provisioner to move them to the proper place, set permissions, etc.
---
# File Provisioner
Type: `file`
-The file provisioner uploads files to machines built by Packer. The
+The file Packer provisioner uploads files to machines built by Packer. The
recommended usage of the file provisioner is to use it to upload files,
and then use [shell provisioner](/docs/provisioners/shell.html) to move
them to the proper place, set permissions, etc.
diff --git a/website/source/docs/provisioners/puppet-masterless.html.markdown b/website/source/docs/provisioners/puppet-masterless.html.markdown
index 5864428a0..b3574cac6 100644
--- a/website/source/docs/provisioners/puppet-masterless.html.markdown
+++ b/website/source/docs/provisioners/puppet-masterless.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Puppet (Masterless) Provisioner"
+description: |-
+ The masterless Puppet Packer provisioner configures Puppet to run on the machines by Packer from local modules and manifest files. Modules and manifests can be uploaded from your local machine to the remote machine or can simply use remote paths (perhaps obtained using something like the shell provisioner). Puppet is run in masterless mode, meaning it never communicates to a Puppet master.
---
# Puppet (Masterless) Provisioner
Type: `puppet-masterless`
-The masterless Puppet provisioner configures Puppet to run on the machines
+The masterless Puppet Packer provisioner configures Puppet to run on the machines
by Packer from local modules and manifest files. Modules and manifests
can be uploaded from your local machine to the remote machine or can simply
use remote paths (perhaps obtained using something like the shell provisioner).
diff --git a/website/source/docs/provisioners/puppet-server.html.markdown b/website/source/docs/provisioners/puppet-server.html.markdown
index c1847db23..f60e88f50 100644
--- a/website/source/docs/provisioners/puppet-server.html.markdown
+++ b/website/source/docs/provisioners/puppet-server.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Puppet Server Provisioner"
+description: |-
+ The `puppet-server` Packer provisioner provisions Packer machines with Puppet by connecting to a Puppet master.
---
# Puppet Server Provisioner
Type: `puppet-server`
-The `puppet-server` provisioner provisions Packer machines with Puppet
+The `puppet-server` Packer provisioner provisions Packer machines with Puppet
by connecting to a Puppet master.
-> **Note:** Puppet will _not_ be installed automatically
diff --git a/website/source/docs/provisioners/salt-masterless.html.markdown b/website/source/docs/provisioners/salt-masterless.html.markdown
index c398c26ff..a298bb28d 100644
--- a/website/source/docs/provisioners/salt-masterless.html.markdown
+++ b/website/source/docs/provisioners/salt-masterless.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Salt (Masterless) Provisioner"
+description: |-
+ The `salt-masterless` Packer provisioner provisions machines built by Packer using Salt states, without connecting to a Salt master.
---
# Salt Masterless Provisioner
Type: `salt-masterless`
-The `salt-masterless` provisioner provisions machines built by Packer using
+The `salt-masterless` Packer provisioner provisions machines built by Packer using
[Salt](http://saltstack.com/) states, without connecting to a Salt master.
## Basic Example
diff --git a/website/source/docs/provisioners/shell.html.markdown b/website/source/docs/provisioners/shell.html.markdown
index b5dae4b5d..ffed1e442 100644
--- a/website/source/docs/provisioners/shell.html.markdown
+++ b/website/source/docs/provisioners/shell.html.markdown
@@ -1,13 +1,15 @@
---
layout: "docs"
page_title: "Shell Provisioner"
+description: |-
+ The shell Packer provisioner provisions machines built by Packer using shell scripts. Shell provisioning is the easiest way to get software installed and configured on a machine.
---
# Shell Provisioner
Type: `shell`
-The shell provisioner provisions machines built by Packer using shell scripts.
+The shell Packer provisioner provisions machines built by Packer using shell scripts.
Shell provisioning is the easiest way to get software installed and configured
on a machine.
diff --git a/website/source/docs/templates/builders.html.markdown b/website/source/docs/templates/builders.html.markdown
index de99a9eca..0226d30d5 100644
--- a/website/source/docs/templates/builders.html.markdown
+++ b/website/source/docs/templates/builders.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Templates: Builders"
+description: |-
+ Within the template, the builders section contains an array of all the builders that Packer should use to generate a machine images for the template.
---
# Templates: Builders
diff --git a/website/source/docs/templates/configuration-templates.html.markdown b/website/source/docs/templates/configuration-templates.html.markdown
index cd086af29..bf6b31e36 100644
--- a/website/source/docs/templates/configuration-templates.html.markdown
+++ b/website/source/docs/templates/configuration-templates.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Configuration Templates"
+description: |-
+ All strings within templates are processed by a common Packer templating engine, where variables and functions can be used to modify the value of a configuration parameter at runtime.
---
# Configuration Templates
diff --git a/website/source/docs/templates/introduction.html.markdown b/website/source/docs/templates/introduction.html.markdown
index 26b618c7d..a8be4f592 100644
--- a/website/source/docs/templates/introduction.html.markdown
+++ b/website/source/docs/templates/introduction.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Templates"
+description: |-
+ Templates are JSON files that configure the various components of Packer in order to create one or more machine images. Templates are portable, static, and readable and writable by both humans and computers. This has the added benefit of being able to not only create and modify templates by hand, but also write scripts to dynamically create or modify templates.
---
# Templates
diff --git a/website/source/docs/templates/post-processors.html.markdown b/website/source/docs/templates/post-processors.html.markdown
index 8a8adec89..7a7ba4664 100644
--- a/website/source/docs/templates/post-processors.html.markdown
+++ b/website/source/docs/templates/post-processors.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Templates: Post-Processors"
+description: |-
+ The post-processor section within a template configures any post-processing that will be done to images built by the builders. Examples of post-processing would be compressing files, uploading artifacts, etc.
---
# Templates: Post-Processors
diff --git a/website/source/docs/templates/provisioners.html.markdown b/website/source/docs/templates/provisioners.html.markdown
index 7da902c54..00578bb86 100644
--- a/website/source/docs/templates/provisioners.html.markdown
+++ b/website/source/docs/templates/provisioners.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Templates: Provisioners"
+description: |-
+ Within the template, the provisioners section contains an array of all the provisioners that Packer should use to install and configure software within running machines prior to turning them into machine images.
---
# Templates: Provisioners
diff --git a/website/source/docs/templates/user-variables.html.markdown b/website/source/docs/templates/user-variables.html.markdown
index e17d831d7..ae6ef3cd3 100644
--- a/website/source/docs/templates/user-variables.html.markdown
+++ b/website/source/docs/templates/user-variables.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "User Variables in Templates"
+description: |-
+ User variables allow your templates to be further configured with variables from the command-line, environmental variables, or files. This lets you parameterize your templates so that you can keep secret tokens, environment-specific data, and other types of information out of your templates. This maximizes the portablility and shareability of the template.
---
# User Variables
diff --git a/website/source/docs/templates/veewee-to-packer.html.markdown b/website/source/docs/templates/veewee-to-packer.html.markdown
index 2899372ac..81a06de71 100644
--- a/website/source/docs/templates/veewee-to-packer.html.markdown
+++ b/website/source/docs/templates/veewee-to-packer.html.markdown
@@ -1,6 +1,8 @@
---
layout: "docs"
page_title: "Convert Veewee Definitions to Packer Templates"
+description: |-
+ If you are or were a user of Veewee, then there is an official tool called veewee-to-packer that will convert your Veewee definition into an equivalent Packer template. Even if you're not a Veewee user, Veewee has a large library of templates that can be readily used with Packer by simply converting them.
---
# Veewee-to-Packer
diff --git a/website/source/index.html.erb b/website/source/index.html.erb
index 9138f24ad..6c6ddc5dd 100644
--- a/website/source/index.html.erb
+++ b/website/source/index.html.erb
@@ -1,3 +1,8 @@
+---
+description: |-
+ Packer is a free and open source tool for creating golden images for multiple platforms from a single source configuration.
+---
+
diff --git a/website/source/intro/getting-started/build-image.html.markdown b/website/source/intro/getting-started/build-image.html.markdown
index 70c13db6e..024447c78 100644
--- a/website/source/intro/getting-started/build-image.html.markdown
+++ b/website/source/intro/getting-started/build-image.html.markdown
@@ -4,6 +4,8 @@ page_title: "Build an Image"
prev_url: "/intro/getting-started/setup.html"
next_url: "/intro/getting-started/provision.html"
next_title: "Provision"
+description: |-
+ With Packer installed, let's just dive right into it and build our first image. Our first image will be an Amazon EC2 AMI with Redis pre-installed. This is just an example. Packer can create images for many platforms with anything pre-installed.
---
# Build an Image
diff --git a/website/source/intro/getting-started/next.html.markdown b/website/source/intro/getting-started/next.html.markdown
index eee743fc9..11f5ea4f7 100644
--- a/website/source/intro/getting-started/next.html.markdown
+++ b/website/source/intro/getting-started/next.html.markdown
@@ -1,6 +1,8 @@
---
layout: "intro"
page_title: "Next Steps"
+description: |-
+ That concludes the getting started guide for Packer. You should now be comfortable with basic Packer usage, should understand templates, defining builds, provisioners, etc. At this point you're ready to begin playing with and using Packer in real scenarios.
---
# Next Steps
diff --git a/website/source/intro/getting-started/parallel-builds.html.markdown b/website/source/intro/getting-started/parallel-builds.html.markdown
index 4145aa178..72ab4737c 100644
--- a/website/source/intro/getting-started/parallel-builds.html.markdown
+++ b/website/source/intro/getting-started/parallel-builds.html.markdown
@@ -4,6 +4,8 @@ page_title: "Parallel Builds"
prev_url: "/intro/getting-started/provision.html"
next_url: "/intro/getting-started/vagrant.html"
next_title: "Vagrant Boxes"
+description: |-
+ So far we've shown how Packer can automatically build an image and provision it. This on its own is already quite powerful. But Packer can do better than that. Packer can create multiple images for multiple platforms in parallel, all configured from a single template.
---
# Parallel Builds
diff --git a/website/source/intro/getting-started/provision.html.markdown b/website/source/intro/getting-started/provision.html.markdown
index 29698775d..bedb63b69 100644
--- a/website/source/intro/getting-started/provision.html.markdown
+++ b/website/source/intro/getting-started/provision.html.markdown
@@ -4,6 +4,8 @@ page_title: "Provision"
prev_url: "/intro/getting-started/build-image.html"
next_url: "/intro/getting-started/parallel-builds.html"
next_title: "Parallel Builds"
+description: |-
+ In the previous page of this guide, you created your first image with Packer. The image you just built, however, was basically just a repackaging of a previously existing base AMI. The real utility of Packer comes from being able to install and configure software into the images as well. This stage is also known as the _provision_ step. Packer fully supports automated provisioning in order to install software onto the machines prior to turning them into images.
---
# Provision
diff --git a/website/source/intro/getting-started/setup.html.markdown b/website/source/intro/getting-started/setup.html.markdown
index 1c98a74a0..60eed6df8 100644
--- a/website/source/intro/getting-started/setup.html.markdown
+++ b/website/source/intro/getting-started/setup.html.markdown
@@ -4,6 +4,8 @@ page_title: "Install Packer"
prev_url: "/intro/platforms.html"
next_url: "/intro/getting-started/build-image.html"
next_title: "Build an Image"
+description: |-
+ Packer must first be installed on the machine you want to run it on. To make installation easy, Packer is distributed as a binary package for all supported platforms and architectures. This page will not cover how to compile Packer from source, as that is covered in the README and is only recommended for advanced users.
---
# Install Packer
diff --git a/website/source/intro/getting-started/vagrant.html.markdown b/website/source/intro/getting-started/vagrant.html.markdown
index c34d35ef9..7353c6f0b 100644
--- a/website/source/intro/getting-started/vagrant.html.markdown
+++ b/website/source/intro/getting-started/vagrant.html.markdown
@@ -4,6 +4,8 @@ page_title: "Vagrant Boxes"
prev_url: "/intro/getting-started/parallel-builds.html"
next_url: "/intro/getting-started/next.html"
next_title: "Next Steps"
+description: |-
+ Packer also has the ability to take the results of a builder (such as an AMI or plain VMware image) and turn it into a Vagrant box.
---
# Vagrant Boxes
diff --git a/website/source/intro/index.html.markdown b/website/source/intro/index.html.markdown
index 381982f81..147cc51ee 100644
--- a/website/source/intro/index.html.markdown
+++ b/website/source/intro/index.html.markdown
@@ -4,6 +4,8 @@ page_title: "Introduction"
prev_url: "#"
next_url: "/intro/why.html"
next_title: "Why Use Packer?"
+description: |-
+ Welcome to the world of Packer! This introduction guide will show you what Packer is, explain why it exists, the benefits it has to offer, and how you can get started with it. If you're already familiar with Packer, the documentation provides more of a reference for all available features.
---
# Introduction to Packer
diff --git a/website/source/intro/platforms.html.markdown b/website/source/intro/platforms.html.markdown
index 830093926..75fcf6721 100644
--- a/website/source/intro/platforms.html.markdown
+++ b/website/source/intro/platforms.html.markdown
@@ -4,6 +4,8 @@ page_title: "Supported Platforms"
prev_url: "/intro/use-cases.html"
next_url: "/intro/getting-started/setup.html"
next_title: "Getting Started: Install Packer"
+description: |-
+ Packer can create machine images for any platform. Packer ships with support for a set of platforms, but can be extended through plugins to support any platform. This page documents the list of supported image types that Packer supports creating.
---
# Supported Platforms
diff --git a/website/source/intro/use-cases.html.markdown b/website/source/intro/use-cases.html.markdown
index 18e95c999..0b73ea32c 100644
--- a/website/source/intro/use-cases.html.markdown
+++ b/website/source/intro/use-cases.html.markdown
@@ -4,6 +4,8 @@ page_title: "Use Cases"
prev_url: "/intro/why.html"
next_url: "/intro/platforms.html"
next_title: "Supported Platforms"
+description: |-
+ By now you should know what Packer does and what the benefits of image creation are. In this section, we'll enumerate _some_ of the use cases for Packer. Note that this is not an exhaustive list by any means. There are definitely use cases for Packer not listed here. This list is just meant to give you an idea of how Packer may improve your processes.
---
# Use Cases
diff --git a/website/source/intro/why.html.markdown b/website/source/intro/why.html.markdown
index cf999fb47..98de7855f 100644
--- a/website/source/intro/why.html.markdown
+++ b/website/source/intro/why.html.markdown
@@ -4,6 +4,8 @@ page_title: "Why Use Packer?"
prev_url: "/intro/index.html"
next_url: "/intro/use-cases.html"
next_title: "Packer Use Cases"
+description: |-
+ Pre-baked machine images have a lot of advantages, but most have been unable to benefit from them because images have been too tedious to create and manage. There were either no existing tools to automate the creation of machine images or they had too high of a learning curve. The result is that, prior to Packer, creating machine images threatened the agility of operations teams, and therefore aren't used, despite the massive benefits.
---
# Why Use Packer?
diff --git a/website/source/layouts/layout.erb b/website/source/layouts/layout.erb
index 6125e165a..898de87c1 100644
--- a/website/source/layouts/layout.erb
+++ b/website/source/layouts/layout.erb
@@ -1,8 +1,8 @@
- <%= current_page.data.page_title ? "#{current_page.data.page_title} - " : "" %>Packer
-
+ <%= [current_page.data.page_title, "Packer by HashiCorp"].compact.join(" - ") %>
+
<%= stylesheet_link_tag "application" %>