Files
Packer-Cn/README.md
T

122 lines
3.7 KiB
Markdown
Raw Normal View History

2013-03-22 22:41:53 -07:00
# Packer
2013-06-08 22:56:34 -07:00
* Website: http://www.packer.io
* IRC: `#packer-tool` on Freenode
* Mailing list: [Google Groups](http://groups.google.com/group/packer-tool)
2013-06-08 22:35:58 -07:00
Packer is a tool for building identical machine images for multiple platforms
from a single source configuration.
2013-03-22 22:41:53 -07:00
2013-06-08 22:35:58 -07:00
Packer is lightweight, runs on every major operating system, and is highly
performant, creating machine images for multiple platforms in parallel.
2014-05-09 07:37:34 -07:00
Packer comes out of the box with support for the following platforms:
* Amazon EC2 (AMI). Both EBS-backed and instance-store AMIs
* DigitalOcean
* Docker
* Google Compute Engine
* OpenStack
* Parallels
* QEMU. Both KVM and Xen images.
* VirtualBox
* VMware
Support for other platforms can be added via plugins.
The images that Packer creates can easily be turned into
2013-06-28 09:36:01 -04:00
[Vagrant](http://www.vagrantup.com) boxes.
2013-03-22 22:41:53 -07:00
2013-03-23 15:59:17 -07:00
## Quick Start
2013-06-28 09:36:01 -04:00
**Note:** There is a great
[introduction and getting started guide](http://www.packer.io/intro)
2013-06-28 09:36:01 -04:00
for those with a bit more patience. Otherwise, the quick start below
will get you up and running quickly, at the sacrifice of not explaining some
key points.
2013-06-28 13:54:31 -07:00
First, [download a pre-built Packer binary](http://www.packer.io/downloads.html)
2013-06-28 09:36:01 -04:00
for your operating system or [compile Packer yourself](#developing-packer).
2013-03-23 15:59:17 -07:00
2013-06-08 22:35:58 -07:00
After Packer is installed, create your first template, which tells Packer
what platforms to build images for and how you want to build them. In our
case, we'll create a simple AMI that has Redis pre-installed. Save this
file as `quick-start.json`. Be sure to replace any credentials with your
own.
```json
{
"builders": [{
"type": "amazon-ebs",
"access_key": "YOUR KEY HERE",
"secret_key": "YOUR SECRET KEY HERE",
"region": "us-east-1",
"source_ami": "ami-de0d9eb7",
2013-06-28 09:36:01 -04:00
"instance_type": "t1.micro",
2013-06-08 22:35:58 -07:00
"ssh_username": "ubuntu",
2013-08-08 17:01:41 -07:00
"ami_name": "packer-example {{timestamp}}"
2013-06-08 22:35:58 -07:00
}]
}
```
Next, tell Packer to build the image:
2013-03-23 15:59:17 -07:00
```
2013-05-08 21:09:19 -07:00
$ packer build quick-start.json
2013-03-23 15:59:17 -07:00
...
```
Packer will build an AMI according to the "quick-start" template. The AMI
will be available in your AWS account. To delete the AMI, you must manually
delete it using the [AWS console](https://console.aws.amazon.com/). Packer
builds your images, it does not manage their lifecycle. Where they go, how
they're run, etc. is up to you.
2013-06-08 22:35:58 -07:00
## Documentation
2013-03-23 15:59:17 -07:00
2013-06-08 22:35:58 -07:00
Full, comprehensive documentation is viewable on the Packer website:
2013-03-23 15:59:17 -07:00
2013-06-08 22:35:58 -07:00
http://www.packer.io/docs
2013-03-23 15:59:17 -07:00
2013-03-23 00:48:20 -07:00
## Developing Packer
2013-03-22 22:41:53 -07:00
2014-09-02 15:13:55 -07:00
If you wish to work on Packer itself or any of its built-in providers,
you'll first need [Go](http://www.golang.org) installed (version 1.2+ is
_required_). Make sure Go is properly installed, including setting up
a [GOPATH](http://golang.org/doc/code.html#GOPATH).
2013-06-29 14:32:27 -07:00
2014-09-02 15:13:55 -07:00
Next, install the following software packages, which are needed for some dependencies:
2014-09-02 15:13:55 -07:00
- [Bazaar](http://bazaar.canonical.com/en/)
- [Git](http://git-scm.com/)
- [Mercurial](http://mercurial.selenic.com/)
2014-09-02 15:13:55 -07:00
Then, install [Gox](https://github.com/mitchellh/gox), which is used
as a compilation tool on top of Go:
2014-09-02 15:13:55 -07:00
$ go get -u github.com/mitchellh/gox
2013-03-23 00:48:20 -07:00
2014-09-02 15:13:55 -07:00
Next, clone this repository into `$GOPATH/src/github.com/mitchellh/packer`.
Install the necessary dependencies by running `make updatedeps` and then just
type `make`. This will compile some more dependencies and then run the tests. If
this exits with exit status 0, then everything is working!
2013-05-08 21:09:19 -07:00
2014-09-02 15:13:55 -07:00
$ make updatedeps
...
$ make
...
2014-04-26 15:10:33 -07:00
2014-09-02 15:13:55 -07:00
To compile a development version of Packer and the built-in plugins,
run `make dev`. This will put Packer binaries in the `bin` folder:
2014-09-02 15:13:55 -07:00
$ make dev
...
$ bin/packer
...
2013-09-03 08:53:29 -07:00
2014-09-02 15:13:55 -07:00
If you're developing a specific package, you can run tests for just that
package by specifying the `TEST` variable. For example below, only
`packer` package tests will be run.
$ make test TEST=./packer
...