diff --git a/website/source/docs/builders/amazon-chroot.html.markdown b/website/source/docs/builders/amazon-chroot.html.markdown new file mode 100644 index 000000000..4839344e4 --- /dev/null +++ b/website/source/docs/builders/amazon-chroot.html.markdown @@ -0,0 +1,177 @@ +--- +layout: "docs" +page_title: "Amazon AMI Builder (chroot)" +--- + +# AMI Builder (chroot) + +Type: `amazon-chroot` + +The `amazon-chroot` builder is able to create Amazon AMIs backed by +an EBS volume as the root device. For more information on the difference +between instance storage and EBS-backed instances, see the +["storage for the root device" section in the EC2 documentation](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device). + +The difference between this builder and the `amazon-ebs` builder is that +this builder is able to build an EBS-backed AMI without launching a new +EC2 instance. This can dramatically speed up AMI builds for organizations +who need the extra fast build. + +
This is an advanced builder. If you're just getting +started with Packer, we recommend starting with the +amazon-ebs builder, which is +much easier to use.
+
+{
+ "type": "amazon-chroot",
+ "access_key": "YOUR KEY HERE",
+ "secret_key": "YOUR SECRET KEY HERE",
+ "source_ami": "ami-e81d5881",
+ "ami_name": "packer-amazon-chroot {{.CreateTime}}"
+}
+
+
+## AMI Name Variables
+
+The AMI name specified by the `ami_name` configuration variable is actually
+treated as a [configuration template](/docs/templates/configuration-templates.html).
+Packer provides a set of variables that it will replace
+within the AMI name. This helps ensure the AMI name is unique, as AWS requires.
+
+The available variables are shown below:
+
+* `CreateTime` - This will be replaced with the Unix timestamp of when
+ the AMI was built.
+
+## Chroot Mounts
+
+The `chroot_mounts` configuration can be used to mount additional devices
+within the chroot. By default, the following additional mounts are added
+into the chroot by Packer:
+
+* `/proc` (proc)
+* `/sys` (sysfs)
+* `/dev` (bind to real `/dev`)
+* `/dev/pts` (devpts)
+* `/proc/sys/fs/binfmt_misc` (binfmt_misc)
+
+These default mounts are usually good enough for anyone and are sane
+defaults. However, if you want to change or add the mount points, you may
+using the `chroot_mounts` configuration. Here is an example configuration:
+
+
+{
+ "chroot_mounts": [
+ ["proc", "proc", "/proc"],
+ ["bind", "/dev", "/dev"]
+ ]
+}
+
+
+`chroot_mounts` is a list of a 3-tuples of strings. The three components
+of the 3-tuple, in order, are:
+
+* The filesystem type. If this is "bind", then Packer will properly bind
+ the filesystem to another mount point.
+
+* The source device.
+
+* The mount directory.
+
+## Parallelism
+
+A quick note on parallelism: it is perfectly safe to run multiple
+_separate_ Packer processes with the `amazon-chroot` builder on the same
+EC2 instance. In fact, this is recommended as a way to push the most performance
+out of your AMI builds.
+
+Packer properly obtains a process lock for the parallelism-sensitive parts
+of its internals such as finding an available device.
diff --git a/website/source/docs/builders/amazon.html.markdown b/website/source/docs/builders/amazon.html.markdown
index b9dc7d2e7..604f2489a 100644
--- a/website/source/docs/builders/amazon.html.markdown
+++ b/website/source/docs/builders/amazon.html.markdown
@@ -18,6 +18,13 @@ AMI. Packer supports the following builders at the moment:
instance-store AMIs by launching and provisioning a source instance, then
rebundling it and uploading it to S3.
+* [amazon-chroot](/docs/builders/amazon-chroot.html) - Create EBS-backed AMIs
+ from an existing EC2 instance by mounting the root device and using a
+ [Chroot](http://en.wikipedia.org/wiki/Chroot) environment to provision
+ that device. This is an **advanced builder and should not be used by
+ newcomers**. However, it is also the fastest way to build an EBS-backed
+ AMI since no new EC2 instance needs to be launched.
+