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.
N/A
Perforce Puppet
Score 8.9 out of 10
N/A
Puppet Enteprise is an IT automation and configuration management solution that enables users to manage and automate infrastructure and complex workflows. The vendor states Puppet Enterprise combines both model‑based and task-based capabilities in a way that enables organizations to scale their multi-cloud infrastructure as their automation footprint grows, with more flexibility from both agent-based and agentless capabilities.
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.
Most of the major issues that people had with the language have been addressed in Puppet 4 which primarily pertain to the limitations of the language and its ability to scale. It would be nice to allow for full ruby support as an unsupported option though so developers are able to reference their own data sources dynamically.
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.
The complexity can get a little overwhelming in a more collaborative deployment methodology across multiple platforms and data centers.
Some external changes to Puppet like the new Puppet 4 architecture can cause considerable time consuming migration efforts especially if you have a lot of legacy classes and configuration that do not conform readily to the new design.
Puppet has top class support. You can simply mail them with their query and they will respond to your query in a timely manner. We do have enterprise license for puppet. Also there is a vibrant community for puppet out there. So even if you dont purchase a premium support option you can simply google your queries and get answers
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.
Puppet was selected before I joined the team, had it been my choice I would have much rather went with Chef as it has the ability to do things that Puppet has not yet added to their system such a the ability to quickly query what host currently are allowing puppet to maintain their files or the ability to run remote commands without having to include it in a manifest like Chef does with the knife command. Salt allows you to do similar things to the knife command that is included with Chef, and also allows you to transfer files quickly to multiple host at once with a short simple command.
With all the DevOps and automation that we have going on, we save a ton of time on the configuration of the server. It's safe to say that configuring servers via console or via UI is a thing of the past.
We try to get all the things done by using a centralized repo (GitHub). Puppet is one tool that actually gets the actual work done.
The small amount that we spent on purchasing premium Puppet is completely justified because of the time and effort that this tool actually helps us save.