« Previous 1 2 3 4
Automating development environments and deployment with Otto
Ottomatic
Infrastructural Measures
The middle project
section of Listing 1 uses the name
setting to assign the application to a project. The idea is to allow developers to group applications according to a particular project in the future; however, Otto does not evaluate the setting in version 0.1.2.
Otto summarizes the desired cloud and the resources required in the cloud under the umbrella term infrastructure
. The selection can be given an arbitrary name in this section by setting the infrastructure
tag (e.g., my-infrastructure
in Listing 1).
Whereas the type
line defines the target system in the infrastructure
section you just named in the project
section, flavor
selects the variant. Each infrastructure exists in various flavors. Otto v0.1.2 has two flavors for the AWS cloud: simple
and vpc-public-private
. By default, the tool uses the simple
variant, which means the virtual machine makes do with the smallest possible resource set in the cloud.
In contrast, the vpc-public-private
variant automatically sets up a private subnet, which makes the web application easier to scale, but also more costly to run. In Listing 1, the web application will run on a single virtual server (flavor = "simple"
) in the Amazon cloud (type = "aws"
).
Finally, a customization
keyword lets you influence the development environment and follows the application type: in the example here, this is a Ruby application. The supported settings depend on the programming language. Listing 1, for example, stipulates that you need Ruby version 2.1.
Otto does not evaluate a modified or new Appfile until you call otto compile
. You then may need to destroy the current development environment (otto dev destroy
) and create a new one (otto dev
). The developers are trying to sell this recompiling
process as a feature; after all, members of a development team can make changes to the Appfile without it influencing the running development environment.
Turbocharger
Otto makes you want to come back for more: Just a handful of commands let you set up a development environment and deploy the finished application in the cloud. Under the hood, well-known and proven tools such as Vagrant handle the hard work.
Of course, you can tell that Otto is at a very early stage of development. The biggest problems in version 0.1.2 were faulty resolution of dependencies and restriction to the Amazon cloud. The good documentation contains many promises for future versions on the roadmap [1].
However, even if the current version of Otto is not production capable, friends of DevOps in particular will want to keep a close eye on the system and follow its future development – after all, Otto will be replacing Vagrant in the long term if everything goes to HashiCorp's plans.
Infos
- Otto: https://ottoproject.io
- Continuous integration: https://en.wikipedia.org/wiki/Continuous_integration
- Continuous delivery: https://en.wikipedia.org/wiki/Continuous_delivery
- "Building Better Software on Schedule with DevOps" by Mathias Huber, ADMIN , issue 23, 2014, pg 22, http://www.admin-magazine.com/Archive/2014/23/Building-better-software-on-schedule-with-DevOps/(language)/eng-US
- "Vagrant, Serf, Packer, and Consul Create and Manage Development Environments" by Tim Schürmann, Linux Pro Magazine , issue 22, 2014, pg 62, http://www.admin-magazine.com/Archive/2014/22/Vagrant-Serf-Packer-and-Consul-create-and-manage-development-environments
- Otto on GitHub: https://github.com/hashicorp/otto
- VirtualBox: https://www.virtualbox.org/wiki/Linux_Downloads
- Vagrant: https://www.vagrantup.com
- Otto and Vagrant: https://www.ottoproject.io/intro/vagrant-successor.html
- Sample application: https://github.com/hashicorp/otto-getting-started
- Consul: https://consul.io
- Amazon AWS: http://aws.amazon.com/free/?nc1=h_ls
- Terraform: https://terraform.io
- Packer: https://packer.io
- Nomad: https://nomadproject.io
- HashiCorp Configuration Language: https://github.com/hashicorp/hcl
« Previous 1 2 3 4
Buy this article as PDF
(incl. VAT)