From a2f437fd6af419c11fcd18b159cf056611c9a425 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sat, 8 Jun 2013 14:36:22 -0700 Subject: [PATCH] website: templates introduction --- .../docs/templates/introduction.html.markdown | 63 +++++++++++++++++++ website/source/layouts/docs.erb | 15 +++-- 2 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 website/source/docs/templates/introduction.html.markdown 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 @@