Service discovery and configuration made easy. Distributed, highly available, and datacenter-aware.

Launch Infrastructure from code

Terraform provides a common configuration to launch infrastructure — from ochestration software to VPS services and AWS.

Simple file based configuration gives you a single view of your entire infrastructure.

$ terraform apply

Combine Mulitple Providers

Terraform allows you to effortlessly combine high level system providers with your own or with each other. Built-in dependency resolution means things happen in the right order — and it's all implied.

Diff your Infrastructure

Your common configuration and state can be stored in version control, shared and distributed among your team. Updates, scaling and modifications will be diffed first, so you can change with confidence.

Combining Multiple Resources with Variables

Access attributes on other resources, even if they are only available after the resource is created. Dependency resolution knows what you need.

Example Configuration

resource "digitalocean_droplet" "web" {

name = "baz"

size = "512mb"

image = "centos-5-8-x32"

region = "sfo1"

}

resource "dnsimple_record" "hello" {

domain = "jack.ly"

name = "hello"

value = "${digitalocean_droplet.foobar.ipv4_address}"

type = "A"

}

Fast, Simplified Interaction

Say goodbye to complicated web consoles, loading bars, command line clients and confusing documentation. Simple and intuitive configuration makes even the most complicated services approachable.

Example Configuration

resource "aws_elb" "frontend" {

name = "frontend-load-balancer"

listener {

instance_port = 8000

instance_protocol = "http"

lb_port = 80

lb_protocol = "http"

}

instances = ["${aws_instance.app.*.id}"]

}

resource "aws_instance" "app" {

count = 5

ami = "ami-043a5034"

instance_type = "m1.small"

}

The intro contains a walkthrough guide, introductory literature and a range of examples to experiment with Terraform.