What is Packer?
Packer is an open source 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 for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc.
HashiCorp 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 automated scripts to install and configure the software within your Packer-made images. Packer brings machine images into the modern age, unlocking untapped potential and opening new opportunities.
$ packer build template.json ==> virtualbox: VirtualBox output will be in this color. ==> vmware: vmware output will be in this color. ==> vmware: Copying or downloading ISO. Progress will be reported periodically. ==> vmware: Creating virtual machine disk ==> vmware: Building and writing VMX file ==> vmware: Starting HTTP server on port 8964 ==> vmware: Starting virtual machine... ==> virtualbox: Downloading VirtualBox guest additions. Progress will be shown periodically ==> virtualbox: Copying or downloading ISO. Progress will be reported periodically. ==> virtualbox: Starting HTTP server on port 8001 ==> virtualbox: Creating virtual machine... ==> virtualbox: Creating hard drive... ==> virtualbox: Creating forwarded port mapping for SSH (host port 3213) ==> virtualbox: Executing custom VBoxManage commands... virtualbox: Executing: modifyvm packer --memory 480 virtualbox: Executing: modifyvm packer --cpus ==> virtualbox: Starting the virtual machine... ==> vmware: Waiting 10s for boot... ==> virtualbox: Waiting 10s for boot...