2013-03-23 01:41:53 -04:00
# Packer
2020-07-22 13:56:55 -04:00
[![Build Status][circleci-badge]][circleci]
2021-03-02 06:21:45 -05:00
[![Discuss ](https://img.shields.io/badge/discuss-packer-3d89ff?style=flat )](https://discuss.hashicorp.com/c/packer)
2020-07-15 04:45:03 -04:00
[![PkgGoDev ](https://pkg.go.dev/badge/github.com/hashicorp/packer )](https://pkg.go.dev/github.com/hashicorp/packer)
2016-10-21 06:56:22 -04:00
[![GoReportCard][report-badge]][report]
2020-03-16 10:59:55 -04:00
[![codecov ](https://codecov.io/gh/hashicorp/packer/branch/master/graph/badge.svg )](https://codecov.io/gh/hashicorp/packer)
2016-10-21 06:56:22 -04:00
2020-07-22 13:56:55 -04:00
[circleci-badge]: https://circleci.com/gh/hashicorp/packer.svg?style=svg
[circleci]: https://app.circleci.com/pipelines/github/hashicorp/packer
2017-06-05 14:17:47 -04:00
[appveyor-badge]: https://ci.appveyor.com/api/projects/status/miavlgnp989e5obc/branch/master?svg=true
2018-04-02 23:09:32 -04:00
[godoc-badge]: https://godoc.org/github.com/hashicorp/packer?status.svg
2021-03-02 06:21:45 -05:00
[godoc]: https://godoc.org/github.com/hashicorp/packer
[report-badge]: https://goreportcard.com/badge/github.com/hashicorp/packer
2018-04-02 23:09:32 -04:00
[report]: https://goreportcard.com/report/github.com/hashicorp/packer
2015-01-22 21:55:34 -05:00
2021-03-02 06:21:45 -05:00
< p align = "center" style = "text-align:center;" >
< a href = "https://www.packer.io" >
2021-03-03 03:55:35 -05:00
< img alt = "HashiCorp Packer logo" src = "website/public/img/logo-packer-padded.svg" width = "500" / >
2021-03-02 06:21:45 -05:00
< / a >
< / p >
2013-06-09 01:56:34 -04:00
2013-06-09 01:35:58 -04:00
Packer is a tool for building identical machine images for multiple platforms
from a single source configuration.
2013-03-23 01:41:53 -04:00
2013-06-09 01:35:58 -04:00
Packer is lightweight, runs on every major operating system, and is highly
2016-02-05 17:21:10 -05:00
performant, creating machine images for multiple platforms in parallel. Packer
2018-02-16 15:06:06 -05:00
comes out of the box with support for many platforms, the full list of which can
2020-11-16 10:51:55 -05:00
be found at https://www.packer.io/docs/builders.
2014-05-09 10:37:34 -04:00
Support for other platforms can be added via plugins.
2013-06-29 12:29:17 -04:00
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-23 01:41:53 -04:00
2013-03-23 18:59:17 -04:00
## Quick Start
2013-06-28 09:36:01 -04:00
**Note:** There is a great
2017-06-21 23:35:55 -04:00
[introduction and getting started guide ](https://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.
2018-04-02 13:59:59 -04:00
First, [download a pre-built Packer
binary](https://www.packer.io/downloads.html) for your operating system or
[compile Packer
yourself](https://github.com/hashicorp/packer/blob/master/.github/CONTRIBUTING.md#setting-up-go-to-work-on-packer).
2013-03-23 18:59:17 -04:00
2013-06-09 01:35:58 -04: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
2021-03-02 06:21:45 -05:00
case, we'll create a simple AMI that has Redis pre-installed.
Save this file as `quick-start.pkr.hcl` . Export your AWS credentials as the
2015-12-15 17:33:19 -05:00
`AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables.
2013-06-09 01:35:58 -04:00
2021-03-02 06:21:45 -05:00
```hcl
variable "access_key" {
type = string
default = "${env("AWS_ACCESS_KEY_ID")}"
}
variable "secret_key" {
type = string
default = "${env("AWS_SECRET_ACCESS_KEY")}"
}
locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") }
source "amazon-ebs" "quick-start" {
access_key = "${var.access_key}"
ami_name = "packer-example ${local.timestamp}"
instance_type = "t2.micro"
region = "us-east-1"
secret_key = "${var.secret_key}"
source_ami = "ami-af22d9b9"
ssh_username = "ubuntu"
}
build {
sources = ["source.amazon-ebs.quick-start"]
2013-06-09 01:35:58 -04:00
}
```
Next, tell Packer to build the image:
2013-03-23 18:59:17 -04:00
```
2021-03-02 06:21:45 -05:00
$ packer build quick-start.pkr.hcl
2013-03-23 18:59:17 -04: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
2018-10-18 19:09:49 -04:00
they're run, etc., is up to you.
2013-03-23 18:59:17 -04:00
2013-06-09 01:35:58 -04:00
## Documentation
2013-03-23 18:59:17 -04:00
2021-03-02 06:21:45 -05:00
Comprehensive documentation is viewable on the Packer website at https://www.packer.io/docs.
2013-03-23 18:59:17 -04:00
2021-03-02 06:21:45 -05:00
## Contributing to Packer
2013-03-23 01:41:53 -04:00
2018-04-02 13:55:13 -04:00
See
[CONTRIBUTING.md ](https://github.com/hashicorp/packer/blob/master/.github/CONTRIBUTING.md )
for best practices and instructions on setting up your development environment
to work on Packer.
2020-07-08 07:17:13 -04:00
## Unmaintained Plugins
2020-07-09 06:39:29 -04:00
As contributors' circumstances change, development on a community maintained
plugin can slow. When this happens, the Packer team may mark a plugin as
2020-07-08 07:17:13 -04:00
unmaintained, to clearly signal the plugin's status to users.
What does **unmaintained** mean?
1. The code repository and all commit history will still be available.
1. Documentation will remain on the Packer website.
1. Issues and pull requests are monitored as a best effort.
1. No active development will be performed by the Packer team.
2020-07-08 12:25:25 -04:00
If anyone form them community is interested in maintaining a community
supported plugin, please feel free to submit contributions via a pull-
request for review; reviews are generally prioritized over feature work
when possible. For a list of open plugin issues and pending feature requests see the [Packer Issue Tracker ](https://github.com/hashicorp/packer/issues/ ).