2013-03-22 22:41:53 -07:00
|
|
|
|
# Packer
|
|
|
|
|
|
|
2022-02-25 16:58:52 -08:00
|
|
|
|
[](https://github.com/hashicorp/packer/actions/workflows/build.yml)
|
2021-03-02 12:21:45 +01:00
|
|
|
|
[](https://discuss.hashicorp.com/c/packer)
|
2020-07-15 10:45:03 +02:00
|
|
|
|
[](https://pkg.go.dev/github.com/hashicorp/packer)
|
2016-10-21 03:56:22 -07:00
|
|
|
|
[![GoReportCard][report-badge]][report]
|
|
|
|
|
|
|
2022-02-25 15:56:20 -08:00
|
|
|
|
[github-badge]: https://github.com/hashicorp/packer/actions/workflows/build.yml/badge.svg
|
2017-06-05 11:17:47 -07:00
|
|
|
|
[appveyor-badge]: https://ci.appveyor.com/api/projects/status/miavlgnp989e5obc/branch/master?svg=true
|
2018-04-02 20:09:32 -07:00
|
|
|
|
[godoc-badge]: https://godoc.org/github.com/hashicorp/packer?status.svg
|
2021-04-21 10:22:34 -07:00
|
|
|
|
[godoc]: https://godoc.org/github.com/hashicorp/packer
|
|
|
|
|
|
[report-badge]: https://goreportcard.com/badge/github.com/hashicorp/packer
|
2018-04-02 20:09:32 -07:00
|
|
|
|
[report]: https://goreportcard.com/report/github.com/hashicorp/packer
|
2015-01-23 11:55:34 +09:00
|
|
|
|
|
2021-03-02 12:21:45 +01: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 12:21:45 +01:00
|
|
|
|
</a>
|
|
|
|
|
|
</p>
|
2013-06-08 22:56:34 -07:00
|
|
|
|
|
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
|
2016-02-05 14:21:10 -08:00
|
|
|
|
performant, creating machine images for multiple platforms in parallel. Packer
|
2018-02-16 12:06:06 -08:00
|
|
|
|
comes out of the box with support for many platforms, the full list of which can
|
2020-11-17 00:51:55 +09:00
|
|
|
|
be found at https://www.packer.io/docs/builders.
|
2014-05-09 07:37:34 -07: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-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
|
2022-02-02 22:51:58 +02:00
|
|
|
|
[introduction and getting started guide](https://learn.hashicorp.com/tutorials/packer/get-started-install-cli)
|
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 10:59:59 -07:00
|
|
|
|
First, [download a pre-built Packer
|
|
|
|
|
|
binary](https://www.packer.io/downloads.html) for your operating system or
|
|
|
|
|
|
[compile Packer
|
2023-07-21 11:38:29 -04:00
|
|
|
|
yourself](https://github.com/hashicorp/packer/blob/main/.github/CONTRIBUTING.md#setting-up-go).
|
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
|
2021-04-21 10:22:34 -07:00
|
|
|
|
case, we'll create a simple AMI that has Redis pre-installed.
|
2021-03-02 12:21:45 +01:00
|
|
|
|
|
|
|
|
|
|
Save this file as `quick-start.pkr.hcl`. Export your AWS credentials as the
|
2015-12-15 22:33:19 +00:00
|
|
|
|
`AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables.
|
2013-06-08 22:35:58 -07:00
|
|
|
|
|
2021-03-02 12:21:45 +01:00
|
|
|
|
```hcl
|
|
|
|
|
|
variable "access_key" {
|
|
|
|
|
|
type = string
|
|
|
|
|
|
default = "${env("AWS_ACCESS_KEY_ID")}"
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
variable "secret_key" {
|
2021-10-13 12:27:28 +02:00
|
|
|
|
type = string
|
|
|
|
|
|
default = "${env("AWS_SECRET_ACCESS_KEY")}"
|
|
|
|
|
|
sensitive = true
|
2021-03-02 12:21:45 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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-08 22:35:58 -07:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Next, tell Packer to build the image:
|
2013-03-23 15:59:17 -07:00
|
|
|
|
|
|
|
|
|
|
```
|
2021-03-02 12:21:45 +01:00
|
|
|
|
$ packer build quick-start.pkr.hcl
|
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
|
2018-10-18 19:09:49 -04:00
|
|
|
|
they're run, etc., is up to you.
|
2013-03-23 15:59:17 -07:00
|
|
|
|
|
2013-06-08 22:35:58 -07:00
|
|
|
|
## Documentation
|
2013-03-23 15:59:17 -07:00
|
|
|
|
|
2021-03-02 12:21:45 +01:00
|
|
|
|
Comprehensive documentation is viewable on the Packer website at https://www.packer.io/docs.
|
2013-03-23 15:59:17 -07:00
|
|
|
|
|
2021-03-02 12:21:45 +01:00
|
|
|
|
## Contributing to Packer
|
2013-03-22 22:41:53 -07:00
|
|
|
|
|
2018-04-02 10:55:13 -07: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
|
2021-11-09 16:06:03 -05:00
|
|
|
|
plugin can slow. When this happens, HashiCorp may use GitHub's option to archive the
|
|
|
|
|
|
plugin’s repository, to clearly signal the plugin's status to users.
|
2020-07-08 07:17:13 -04:00
|
|
|
|
|
|
|
|
|
|
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.
|
2021-11-09 16:06:03 -05:00
|
|
|
|
1. No active development will be performed by HashiCorp.
|
|
|
|
|
|
|
|
|
|
|
|
If you are interested in maintaining an unmaintained or archived plugin, please reach out to us at packer@hashicorp.com.
|
2020-07-08 07:17:13 -04:00
|
|
|
|
|