HashiCorp Packer automates the creation of machine images, coming out of the box with support to build images for Amazon EC2, CloudStack, DigitalOcean, Docker, Google Compute Engine, Microsoft Azure, QEMU, VirtualBox, and VMware.
N/A
HashiCorp Vagrant
Score 10.0 out of 10
N/A
Vagrant is a tool designed to create and configure lightweight, reproducible, and portable development environments. It leverages a declarative configuration file which describes all software requirements, packages, operating system configuration, and users.
We use packer to generate new machine images for multiple platforms on every change to our Configuration Management tools like Chef/Puppet/Ansible It's act single tool for Image building for Multi-provider like AWS/Azure/GCP Helps to achieve Dev/Prod Parity Packer itself doesn't have a state like Terraform. You can't do packer output AMI ID. If you have a scenario where you want to maintain the state for images it would be tough to manage via Packer.
If you're writing software, particularly software that depends on other services (web servers or databases for example) then Vagrant is great. I know some people skip Vagrant and just set up virtual machines on their own, but I've found that Vagrant streamlines the process nicely and makes it easy to update or swap out versions. If you're a web developer (which I am) it's amazing. I can have several boxes configured for my different projects and I just spin them up or down based on what I'm working on. One scenario where this might not be ideal is if you're running Vagrant on a computer that has limited resources. Since you're running a virtual machine with its own operating system and such you'll want a host computer with enough RAM, hard drive space and CPU to run the virtual machine properly without killing the performance of the host. The virtual disks can also take up a lot of space if you're not careful so if you have many virtual machines provisioned and don't clean up the old ones that you're not using, you may find that your hard drive is full. Each of my Linux servers take up about 10GB of disk space.
Easy to create machines with different OS's, list of them can be found from Vagrant's website with configuration details.
Flexible configuration, user can determine what software will be pre-installed to machine. Saves time because it doesn't need to be done manually every time.
Easily manage full environments, not just single machines, with single command.
Learning curve is steep - It can be challenging for someone to set up initially. After some coaching, the basics come pretty quickly though.
Relies on external Virtual Machine applications - It would be great if Vagrant itself could run the virtual machine instead of leaning on other virtualization software. This is a small detail, but would make setup simple.
There are lot of tools in market which does the job for Image creation but all of them are not complete Machine/Image as a code. All other alternatives can create Image partially. Main reason for selecting Packer are Packer is lightweight, portable, and command-line driven Packer helps keep development, staging, and production as similar as possible. Packer automates the creation of any type of machine image Multi-provider portability is the feature to die for
Docker has a few advantages, especially with the disk size bloat brought on by Vagrant's hosting an entire OS and project in a VM. It relies on native tools, however, and may not support every software. Vagrant provides uniformity, efficiency and repeatability within team work and for deployment and testing.