Vagrant has been usurped: All hail Otto
Move over Vagrant – you’ve been overthrown. HashiCorp’s newest tool for developing and deploying any application is better, faster and stronger than its predecessor. Otto aims to make microservices easier for developers to work with and is super smart to boot.
Vagrant has undoubtedly been one of the most important virtualisation solutions on the market. Nevertheless, its creators have still gone ahead and introduced Otto, which will inherit Vagrant’s legacy. The King is dead – long live the King!
Most users will no doubt have the vagrant up command firmly imprinted in their minds – it’s practical, powerful, and almost any configuration is possible with a little manual labour. However, there’s now some virtualisation competition for HashiCorp coming from its own camp: Otto is the opposite of Vagrant, which had proved to be a bit bitchy every now and then and even required numerous workarounds at times.
Otto is being hailed as the “successor to Vagrant”: a single solution of development right up to the deployment of an application. Its special features are kept under the hood: Otto should be able to provide the right development environment without the need for configuration. On top of that, it has a big focus on microservices.
Otto also relies on other open-source tools from the company: Vagrant, Serf, Consul, Packer, Terraform, Vault and Nomad.
The stated aim of Otto is to remove as much work as possible for developers. Therefore, it follows three principles: It will abstract the development environment, simplify deployment and simplify the use of microservices.
Let the games begin
Unlike Vagrant, where the defined specifications in each development environment had to be written (Vagrantfile), Otto contains a simple Appfile for creation:
The Appfile is the simplest configuration format we’ve ever made. Actually, everything in the Appfile (including the existence of the Appfile itself) is completely optional. You can run Otto in any directory and it will attempt to discover the application type automatically.
If you still want more control over your development environment, you can adjust the numerous configuration options in the Appfile. By default, however, Otto is guided by best practices and decides independently which operating system it needs, how much memory it’ll require and what’s to be selected for deployment.
In addition, HashiCorp promises that Otto will be smarter over time and assume new standards.
First-class support for microservices
Microservices are a trend one can hardly escape – whether they’re useful or not, remains to be seen. HashiCorp have started to ride the wave and have paid particular attention to microservices with Otto.
Dependencies for different services are specified in the dependency block of an Appfile. It doesn’t matter whether the specified URL leads to Git, Mercurial, a file path or other sources – it’s enough for Otto to know that a dependency exists.
During the build process, Otto pulls the Appfile for each specified dependency; information about installation and configuration are included. Additionally, under certain circumstances, information on other dependencies is also made available.
Otto completes the configuration process and starts services in the same development environment as the VM; when deploying, configuration is adopted so that it’s able to communicate with each service.
As already mentioned, Otto is guided by best practices of its respective languages, and the same goes for deployment. It takes care of this via its infrastructure, build and ultimately the deployment of the application.
Here, a special emphasis is placed on the cloud. Otto should be able to deploy any application in any cloud environment – without too much of a configuration effort.
For its current version (0.1) only AWS is supported, however HashiCorp promises support for additional cloud operators in the near future.
The future starts now
What we’ve heard about Otto sounds incredibly tempting for developers, yet Otto isn’t intended to replace Vagrant just yet – rather, it’ll be further developed and published in parallel with it.
Vagrant is a mature, healthy project that is continuing to grow every day. We are committed to supporting Vagrant for the foreseeable future and will continue to release new versions. Otto is our vision for the next generation and will be developed alongside Vagrant.
Those looking for more information about the tool can check out the official announcement page. Specifically, the introductory section explains in detail its use cases and operation. To get a look at the code itself, head over to the tool’s GitHub repository.