Commit 4b224d74 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

website: intro section

parent 7f3941fa
---
layout: "intro"
page_title: "Introduction"
prev_url: "#"
next_url: "/intro/why.html"
next_title: "Why Use Packer?"
---
# Introduction to Packer
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](/docs) provides more of a reference for all available features.
## What is Packer?
Packer is a tool for creating identical machine images for multiple platforms
from a single source configuration. Packer is lightweight, runs on every major
operating system, and is highly performant, creating machine images for
multiple platforms in parallel. Packer does not replace configuration management
like Chef or Puppet. In fact, when building images, Packer is able to use tools
like Chef or Puppet to install software onto the image.
A _machine image_ is a single static unit that contains a pre-configured operating
system and installed software which is used to quickly create new running machines.
Machine image formats change for each platform. Some examples include
[AMIs](http://en.wikipedia.org/wiki/Amazon_Machine_Image) for EC2,
VMDK/VMX files for VMware, OVF exports for VirtualBox, etc.
---
layout: "intro"
page_title: "Use Cases"
prev_url: "/intro/why.html"
next_url: "/intro/getting-started/setup.html"
next_title: "Getting Started: Install Packer"
---
# Use Cases
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.
### Continuous Delivery
Packer is lightweight, portable, and command-line driven. This makes it the
perfect tool to put in the middle of your continuous delivery pipeline. Packer
can be used to generate new machine images for multiple platforms on every
change to Chef/Puppet.
As part of this pipeline, the newly created images can then be launched and
tested, verifying the infrastructure changes work. If the tests pass, you can
be confident that that image will work when deployed. This brings a new level
of stability and testability to infrastructure changes.
### Dev/Prod Parity
Packer helps [keep development, staging, and production as similar as possible](http://www.12factor.net/dev-prod-parity).
Packer can be used to generate images for multiple platforms at the same time.
So if you use AWS for production and VMware (perhaps with [Vagrant](http://www.vagrantup.com))
for development, you can generate both an AMI and a VMware machine using
Packer at the same time from the same template.
Mix this in with the continous delivery use case above, and you have a pretty
slick system for consistent work environments from development all the
way through to production.
### Appliance/Demo Creation
Since Packer creates consistent images for multiple platforms in parallel,
it is perfect for creating [appliances](http://en.wikipedia.org/wiki/Software_appliance)
and disposable product demos. As your software changes, you can automatically
create applicances with the software pre-installed. Potential users can then
get started with your software by deploying it to the environment of their
choice.
Packaging up software with complex requirements has never been so easy.
Or enjoyable, if you ask me.
---
layout: "intro"
page_title: "Why Use Packer?"
prev_url: "/intro/index.html"
next_url: "/intro/use-cases.html"
next_title: "Packer Use Cases"
---
# Why Use Packer?
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 ether 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.
Packer changes all of this. Packer is easy to use and automates the creation
of any type of machine image. It embraces modern configuration management by
encouraging you to use a framework such as Chef or Puppet to install and
configure the software within your Packer-made images.
In other words: Packer brings pre-baked images into the modern age, unlocking
untapped potential and opening new opportunities.
## Advantages of Using Packer
***Super fast infrastructure deployment***. Packer images allow you to launch
completely provisioned and configured machines in seconds, rather than
several minutes or hours. This benefits not only production, but development as well,
since development virtual machines can also be launched in seconds, without waiting
for a typically much longer provisioning time.
***Multi-provider portability***. Because Packer creates identical images for
multiple platforms, you can run production in AWS, staging/QA in a private
cloud like OpenStack, and development in desktop virtualization solutions
such as VMware or VirtualBox. Each environment is running an identical
machine image, giving ultimate portability.
***Improved stability***. Packer installs and configures all the software for
a machine at the time the image is built. If there are bugs in these scripts,
they'll be caught early, rather than several minutes after a machine is launched.
***Greater testability***. After a machine image is built, that machine image
can be quickly launched and smoke tested to verify that things appear to be
working. If they are, you can be confident that any other machines launched
from that image will function properly.
Packer makes it extremely easy to take advantage of all these benefits.
What are you waiting for? Let's get started!
<% wrap_layout :layout do %> <% wrap_layout :inner do %>
<div class="docs-wrapper"> <% content_for :sidebar do %>
<div class="sidebar dark-background hidden-phone"> <h2>Docs</h2>
<h2>Docs</h2>
<ul>
<ul> <li><a href="/docs/index.html">What is Packer?</a></li>
<li><a href="/docs/index.html">What is Packer?</a></li> <li><a href="/docs/installation.html">Installation</a></li>
<li><a href="/docs/installation.html">Installation</a></li> <li><a href="/docs/basics/terminology.html">Terminology</a></li>
<li><a href="/docs/basics/terminology.html">Terminology</a></li> </ul>
</ul>
<ul>
<ul> <li><h4>Command-Line</h4></li>
<li><h4>Command-Line</h4></li> <li><a href="/docs/command-line/introduction.html">Introduction</a></li>
<li><a href="/docs/command-line/introduction.html">Introduction</a></li> <li><a href="/docs/command-line/build.html">Build</a></li>
<li><a href="/docs/command-line/build.html">Build</a></li> <li><a href="/docs/command-line/validate.html">Validate</a></li>
<li><a href="/docs/command-line/validate.html">Validate</a></li> </ul>
</ul>
<ul>
<ul> <li><h4>Templates</h4></li>
<li><h4>Templates</h4></li> <li><a href="/docs/templates/introduction.html">Introduction</a></li>
<li><a href="/docs/templates/introduction.html">Introduction</a></li> <li><a href="/docs/templates/builders.html">Builders</a></li>
<li><a href="/docs/templates/builders.html">Builders</a></li> <li><a href="/docs/templates/provisioners.html">Provisioners</a></li>
<li><a href="/docs/templates/provisioners.html">Provisioners</a></li> <li><a href="/docs/templates/post-processors.html">Post-Processors</a></li>
<li><a href="/docs/templates/post-processors.html">Post-Processors</a></li> <li><a href="/docs/templates/configuration-templates.html">Configuration Templates</a></li>
<li><a href="/docs/templates/configuration-templates.html">Configuration Templates</a></li> </ul>
</ul>
<ul>
<ul> <li><h4>Builders</h4></li>
<li><h4>Builders</h4></li> <li><a href="/docs/builders/digitalocean.html">DigitalOcean</a></li>
<li><a href="/docs/builders/digitalocean.html">DigitalOcean</a></li> <li><a href="/docs/builders/amazon-ebs.html">EC2 (AMI)</a></li>
<li><a href="/docs/builders/amazon-ebs.html">EC2 (AMI)</a></li> <li><a href="/docs/builders/virtualbox.html">VirtualBox</a></li>
<li><a href="/docs/builders/virtualbox.html">VirtualBox</a></li> <li><a href="/docs/builders/vmware.html">VMware</a></li>
<li><a href="/docs/builders/vmware.html">VMware</a></li> <li><a href="/docs/builders/custom.html">Custom</a></li>
<li><a href="/docs/builders/custom.html">Custom</a></li> </ul>
</ul>
<ul>
<ul> <li><h4>Provisioners</h4></li>
<li><h4>Provisioners</h4></li> <li><a href="/docs/provisioners/shell.html">Shell Scripts</a></li>
<li><a href="/docs/provisioners/shell.html">Shell Scripts</a></li> <li><a href="/docs/provisioners/custom.html">Custom</a></li>
<li><a href="/docs/provisioners/custom.html">Custom</a></li> </ul>
</ul>
<ul>
<ul> <li><h4>Other</h4></li>
<li><h4>Other</h4></li> <li><a href="/docs/other/core-configuration.html">Core Configuration</a></li>
<li><a href="/docs/other/core-configuration.html">Core Configuration</a></li> <li><a href="/docs/other/debugging.html">Debugging</a></li>
<li><a href="/docs/other/debugging.html">Debugging</a></li> </ul>
</ul>
<ul>
<ul> <li><h4>Extend Packer</h4></li>
<li><h4>Extend Packer</h4></li> <li><a href="/docs/extend/plugins.html">Packer Plugins</a></li>
<li><a href="/docs/extend/plugins.html">Packer Plugins</a></li> <li><a href="/docs/extend/developing-plugins.html">Developing Plugins</a></li>
<li><a href="/docs/extend/developing-plugins.html">Developing Plugins</a></li> <li><a href="/docs/extend/builder.html">Custom Builder</a></li>
<li><a href="/docs/extend/builder.html">Custom Builder</a></li> <li><a href="/docs/extend/command.html">Custom Command</a></li>
<li><a href="/docs/extend/command.html">Custom Command</a></li> <li><a href="/docs/extend/post-processor.html">Custom Post-Processor</a></li>
<li><a href="/docs/extend/post-processor.html">Custom Post-Processor</a></li> <li><a href="/docs/extend/provisioner.html">Custom Provisioner</a></li>
<li><a href="/docs/extend/provisioner.html">Custom Provisioner</a></li> </ul>
</ul> <% end %>
<%= yield %>
<!-- trick it into having a full-height sidebar regardless of content height -->
<div class="sidebar-background"></div>
</div>
<div class="docs-body">
<div class="docs-content">
<%= yield %>
</div>
<div class="docs-background"></div>
</div>
</div>
<% end %> <% end %>
<% wrap_layout :layout do %>
<div class="docs-wrapper">
<div class="sidebar dark-background">
<%= yield_content :sidebar %>
<div class="sidebar-background"></div>
</div>
<div class="docs-body">
<div class="docs-content">
<%= yield %>
</div>
<% if current_page.data.next_url %>
<div class="pagination">
<a class="previous-section" href="<%= current_page.data.prev_url %>"></a>
<a class="next-section" href="<%= current_page.data.next_url %>">
<h4>
<span class="text-green uppercase">next</span>
<%= current_page.data.next_title %>
</h4>
</a>
</div>
<% end %>
<div class="docs-background"></div>
</div>
</div>
<% end %>
<% wrap_layout :inner do %>
<% content_for :sidebar do %>
<h2>Intro</h2>
<ul>
<li><h4>Concepts</h4></li>
<li><a href="/intro/index.html">What is Packer?</a></li>
<li><a href="/intro/why.html">Why Use Packer?</a></li>
<li><a href="/intro/use-cases.html">Use Cases</a></li>
</ul>
<ul>
<li><h4>Getting Started</h4></li>
<li><a href="/intro/getting-started/setup.html">Install Packer</a></li>
<li><a href="#">Build an Image</a></li>
<li><a href="#">Provision</a></li>
<li><a href="#">Parallel Builds</a></li>
<li><a href="#">Post-Process</a></li>
</ul>
<% end %>
<%= yield %>
<% end %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Packer</title> <title><%= current_page.data.page_title ? "#{current_page.data.page_title} - " : "" %>Packer</title>
<meta name="description" content="Packer is a free and open source tool for creating golden images for multiple platforms from a single source configuration." /> <meta name="description" content="Packer is a free and open source tool for creating golden images for multiple platforms from a single source configuration." />
<!-- HTML5 shiv --> <!-- HTML5 shiv -->
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
</a> </a>
<a href="/" class="packer-logo pull-left">Packer</a> <a href="/" class="packer-logo pull-left">Packer</a>
<ul> <ul>
<li><a href="#">Intro</a></li> <li><a href="/intro">Intro</a></li>
<li><a href="/docs">Documentation</a></li> <li><a href="/docs">Documentation</a></li>
<li><a href="#">Community</a></li> <li><a href="#">Community</a></li>
</ul> </ul>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment