AWS OpsWorks is a configuration management service that provides managed instances of Chef and Puppet.
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.
AWS Opsworks is good for linking AWS services and setting up and maintaining webservers using Chef. However, it will become EOL soon so we would not recommend starting new projects using it and instead go for the recommended Systems Manager setup
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.
The interface is quite intuitive and allows you to discover and easily find what you want to do and what other features are within OpsWorks.
Chef integration is pretty seamless and there are a good set of options and operating systems to choose from
It makes things like auto scaling set up, either via load or time, more straight forward and intuitive than what you'd typically see via the EC2 console
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.
Unless you pay for a pricey support package getting support on OpsWorks will be pretty slow. Documentation is also relatively limited and sometimes hard to follow when compared to competitors. Generally, we've been able to get the answers we need from OpsWorks support when we run into problems but don't expect rapid responses.
OpsWorks isn't really a direct competitor to Terraform/Cloudformation, but it does allow you to do some of the more simple things on offer quite quickly and effectively. Opsworks was used for this reason, along with existing internal knowledge of Chef. Along with some of the other services on offer from AWS, it is good to use as a stepping stone along the way when building your systems - or perhaps it would be entirely suitable for a fairly simple project.
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.
OpsWorks allowed us to access the AWS infrastructure with a considerably lower time investment than we would have otherwise needed when we first implemented it.
Since we've been running with OpsWorks we've experienced very little downtime and it's required relatively little maintenance.
The main downside of using OpsWorks for us is that it has locked us into a very specific infrastructure that doesn't have the flexibility of many of the newer infrastructure management tools, this may lead to a painful migration down the road. We also run a risk of long outage if it ever does introduce breaking changes as the skillset needed to work with the OpsWorks tooling is very specific not widely available in our company.