Terraform by Hashicorp

Posted August 7, 2014

HashiCorp released a new open source tool to manage and deploy infrastructures : Terraform.

Terraform was announced one week ago on HashiCorp’s blog. At the end of the first week, its GitHub repository had already collected more than 1000 stars.

The official goal for the project according to the documentation is to be a tool for building, changing, and versioning infrastructure safely and efficiently.

Terraform complements HashiCorp set of tools

Terraform is the fifth product from HashiCorp. Their products are quite popular. As a reminder, their products are :

  • Vagrant, a de facto standard command line tool to create and manage dev env virtual machines. Vagrant is really popular along web developers.
  • Packer, a tool to create images for multiple platforms from a single source configuration.
  • Consul, a tool for discovering and configure services in infrastructures.
  • Serf, a decentralized orchestration tool.

How Terraform works

Terraform use the concept of Infrastructure as Code. This concept is already omnipresent and well-known because of the mainstream adoption of provisioning tools like Puppet or Chef. In Terraform, one person can declare resources, which will be managed by the tool, in a configuration file. With this configuration file, the tool is able to :

  • Generate and print an execution plan
  • Deploy changes
  • Version control the infrastructure

How Terraform can integrate to your set of tools

This tool should be set on top of existing provisioning tools. Terraform calls provisionners (local or remote) declared in the configuration right after allocation of resources.

Why Terraform is an interesting project

HashiCorp’s new product is cloud computing provider agnostic and based on Infrastruture as Code. Framework and libraries exists but there isn’t a tool to use them declaratively. There is also AWS CloudFormation (first release was in 2011) but you are stuck with AWS.

author Philippe LewinWritten by Philippe Lewin, French Software Engineer. twitter