HashiCorp Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. It enables infrastructure-as-code for image creation.
📑 Table of Contents
Key Features
- Multi-Platform: AWS, Azure, GCP, VMware, Docker
- Parallel Builds: Create multiple images simultaneously
- Provisioners: Shell, Ansible, Chef, Puppet
- Post-Processors: Upload, compress, tag images
- HCL2: Modern configuration syntax
Installation
Install Packer:
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install packer
Usage Examples
Packer template (aws.pkr.hcl):
source "amazon-ebs" "ubuntu" {
ami_name = "ubuntu-server"
instance_type = "t2.micro"
region = "us-west-2"
source_ami_filter {
filters = {
name = "ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"
}
owners = ["099720109477"]
}
ssh_username = "ubuntu"
}
build {
sources = ["source.amazon-ebs.ubuntu"]
provisioner "shell" {
inline = ["sudo apt update", "sudo apt install -y nginx"]
}
}
Benefits
Packer ensures consistent images across environments. Automated image building reduces configuration drift and deployment failures.
Was this article helpful?