diff --git a/website/source/docs/templates/introduction.html.markdown b/website/source/docs/templates/introduction.html.markdown new file mode 100644 index 000000000..19418f48b --- /dev/null +++ b/website/source/docs/templates/introduction.html.markdown @@ -0,0 +1,63 @@ +--- +layout: "docs" +--- + +# Templates + +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 are given to commands such as `packer build`, which will +take the template and actually run the builds within it, producing +any resulting machine images. + +## Template Structure + +A template is a JSON object that has a set of keys configuring various +components of Packer. The available keys within a template are listed below. +Along with each key, it is noted whether it is required or not. + +* `builders` (_required_) is an array of one or more objects that defines + the builders that will be used to create machine images for this template, + and configures each of those builders. For more information on how to define + and configure a builder, read the sub-section on + [configuring builders in templates](/docs/templates/builders.html). + +* `provisioners` (optional) is an array of one or more objects that defines + the provisioners that will be used to install and configure software for + the machines created by each of the builders. This is an optional field. + If it is not specified, then no provisioners will be run. For more + information on how to define and configure a provisioner, read the + sub-section on [configuring provisioners in templates](/docs/templates/provisioners.html). + +## Example Template + +Below is an example of a basic template that is nearly fully functional. It is just +missing valid AWS access keys. Otherwise, it would work properly with +`packer build`. + +
+{
+ "builders": [
+ {
+ "type": "amazon-ebs",
+ "access_key": "...",
+ "secret_key": "...",
+ "region": "us-east-1",
+ "source_ami": "ami-de0d9eb7",
+ "ssh_username": "ubuntu",
+ "ami_name": "packer {{.CreateTime}}"
+ }
+ ],
+
+ "provisioners": [
+ {
+ "type": "shell",
+ "path": "setup_things.sh"
+ }
+ ]
+}
+
diff --git a/website/source/layouts/docs.erb b/website/source/layouts/docs.erb
index 000db90cc..956c17b7c 100644
--- a/website/source/layouts/docs.erb
+++ b/website/source/layouts/docs.erb
@@ -15,6 +15,8 @@
padding-bottom: 40px;
}
+
+
@@ -26,11 +28,16 @@