324 lines
12 KiB
Plaintext
324 lines
12 KiB
Plaintext
---
|
|
description: |-
|
|
Terraform enables you to safely and predictably create, change, and improve
|
|
production infrastructure. It is an open source tool that codifies APIs into
|
|
declarative configuration files that can be shared amongst team members,
|
|
treated as code, edited, reviewed, and versioned.
|
|
---
|
|
|
|
<header>
|
|
<div class="container hero">
|
|
<div class="row">
|
|
<div class="col-md-offset-2 col-md-8">
|
|
<%= inline_svg "logo-hashicorp.svg", height: 120, class: "logo" %>
|
|
|
|
<h1>Write, Plan, and Create Infrastructure as Code</h1>
|
|
|
|
<a class="button primary" href="/intro/index.html">Get Started</a>
|
|
<a class="button" href="/downloads.html">Download <%= latest_version %></a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<section id="features" class="marketing white">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<h2>Simple and Powerful</h2>
|
|
<p class="lead">
|
|
Terraform enables you to safely and predictably create, change, and
|
|
improve production infrastructure. It is an open source tool that
|
|
codifies APIs into declarative configuration files that can be shared amongst team members,
|
|
treated as code, edited, reviewed, and versioned.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<a href="#write" class="feature-card">
|
|
<span>Write</span>
|
|
<p>Infrastructure as code</p>
|
|
<%= inline_svg "feature-card-write.svg" %>
|
|
</a>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<a href="#plan" class="feature-card">
|
|
<span>Plan</span>
|
|
<p>Preview changes before applying</p>
|
|
<%= inline_svg "feature-card-plan.svg" %>
|
|
</a>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<a href="#create" class="feature-card">
|
|
<span>Create</span>
|
|
<p>Reproducible infrastructure</p>
|
|
<%= inline_svg "feature-card-create.svg" %>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<hr />
|
|
|
|
<section id="write" class="marketing">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<span class="callout">Write</span>
|
|
<h2>Infrastructure as Code</h2>
|
|
<p class="lead">
|
|
Define infrastructure as code to increase operator productivity
|
|
and transparency.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-5">
|
|
<h3>Collaborate & share</h3>
|
|
<p>Terraform configuration can be stored in version control,
|
|
shared, and collaborated on by teams of operators.</p>
|
|
<h3>Evolve your infrastructure</h3>
|
|
<p>Track the complete history of infrastructure versions.</p>
|
|
<h3>Automation friendly</h3>
|
|
<p>If it can be codified, it can be automated.</p>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
<%= inline_svg "feature-write-bg.svg", class: "feature-image" %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="plan" class="marketing purple">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<span class="callout">Plan</span>
|
|
<h2>One Safe Workflow Across Providers</h2>
|
|
<p class="lead">Terraform provides an elegant user experience for
|
|
operators to safely and predictably make changes to infrastructure.</p>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<%= inline_svg "feature-plan-bg.svg", class: "feature-image" %>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<h3>Map Resource Dependencies</h3>
|
|
<p>
|
|
Understand how a minor change could have potential cascading effects
|
|
across an infrastructure before executing that change. Terraform
|
|
builds a dependency graph from the configurations, and walks this
|
|
graph to generate plans, refresh state, and more.
|
|
</p>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<h3>Separation of Plan & Apply</h3>
|
|
<p>
|
|
Separating plans and applies reduces mistakes and uncertainty at
|
|
scale. Plans show operators what would happen, applies execute
|
|
changes.
|
|
</p>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<h3>One Safe Workflow</h3>
|
|
<p>
|
|
Use Terraform to create resources across all major infrastructure
|
|
providers (AWS, GCP, Azure, OpenStack, VMware, and more).
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="create" class="marketing">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<span class="callout">Create</span>
|
|
<h2>Reproducible Infrastructure</h2>
|
|
<p class="lead">Terraform lets operators easily use the same
|
|
configurations in multiple places to reduce mistakes and save time.</p>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<%= inline_svg "feature-create-bg.svg", class: "feature-image" %>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<h3>Environment parity</h3>
|
|
<p>Use the same Terraform configuration to provision identical staging,
|
|
QA, and production environments.</p>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<h3>Shareable modules</h3>
|
|
<p>Common Terraform configurations can be packaged as modules and used
|
|
across teams and organizations.</p>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<h3>Combine multiple providers consistently</h3>
|
|
<p>Terraform allows you to effortlessly combine high-level system
|
|
providers. Launch a server from one cloud provider, add a DNS entry
|
|
with its IP with a different provider. Built-in dependency resolution
|
|
means things happen in the right order.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="news" class="marketing purple">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<h2>Latest News</h2>
|
|
</div>
|
|
<div class="col-md-5 col-sm-12">
|
|
<div class="latest-item">
|
|
<iframe width="560" height="270" src="https://www.youtube.com/embed/nLg7fpVcIv4?color=white&modestbranding=1" frameborder="0" allowfullscreen></iframe>
|
|
<%#= image_tag 'news/webinar-Terraform-4-4-2017.png', alt: 'Webinar April 4, 2017, 10:00 AM PST' %>
|
|
<h3>Webinar: Multi-Cloud, One Command with Terraform</h3>
|
|
<p>
|
|
Watch our recent webinar with Mitchell Hashimoto to learn how Terraform provisions infrastructure across different clouds using a consistent workflow.
|
|
</p>
|
|
<a class="button" href="https://youtu.be/nLg7fpVcIv4" target="_blank">Watch Now</a>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-offset-1 col-md-6 col-sm-12">
|
|
<div class="latest-item">
|
|
<h3>Terraform 0.9 Released</h3>
|
|
<p>
|
|
Terraform 0.9 adds major new functionality to Terraform. Read the
|
|
highlights from the 0.9 release
|
|
</p>
|
|
<a class="button" href="https://www.hashicorp.com/blog/terraform-0-9/">Read more</a>
|
|
</div>
|
|
<div class="latest-item">
|
|
<h3>Applying Graph Theory to Infrastructure As Code</h3>
|
|
<p>
|
|
Watch this talk from HashiConf 2016 where we explore the graph
|
|
theory at the heart of Terraform's orchestration engine.
|
|
</p>
|
|
<a class="button" href="https://www.youtube.com/watch?v=4Pd9NrZSbGU">Watch Video</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="feature-skew" id="latest-announcement-bg"></div>
|
|
</section>
|
|
|
|
<section id="examples" class="marketing gray">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<h2>Examples</h2>
|
|
<h3>Composing Resources</h3>
|
|
<p>
|
|
Use attributes from other resources to create an infrastructure
|
|
composed of resources across multiple providers.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="terminal">
|
|
<span class="circle"></span>
|
|
<span class="circle"></span>
|
|
<span class="circle"></span>
|
|
<div class="terminal-content">
|
|
<span>resource <span class="txt-spe">"digitalocean_droplet"</span> <span class="txt-str">"web"</span> {</span>
|
|
<span> name = <span class="txt-str">"tf-web"</span></span>
|
|
<span> size = <span class="txt-str">"512mb"</span></span>
|
|
<span> image = <span class="txt-str">"centos-5-8-x32"</span></span>
|
|
<span> region = <span class="txt-str">"sfo1"</span></span>
|
|
<span>}</span>
|
|
<span> </span>
|
|
<span>resource <span class="txt-spe">"dnsimple_record"</span> <span class="txt-str">"hello"</span> {</span>
|
|
<span> domain = <span class="txt-str">"example.com"</span></span>
|
|
<span> name = <span class="txt-str">"test"</span></span>
|
|
<span> value = <span class="txt-str">"<span class="txt-var">${digitalocean_droplet.web.ipv4_address}</span>"</span></span>
|
|
<span> type = <span class="txt-str">"A"</span></span>
|
|
<span>}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<h3>Fast, Simplified Interaction</h3>
|
|
<p>
|
|
Simple and intuitive configuration makes even the most complicated
|
|
services approachable: no more web consoles, loading bars, or
|
|
confusing CLI clients.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="terminal">
|
|
<span class="circle"></span>
|
|
<span class="circle"></span>
|
|
<span class="circle"></span>
|
|
<div class="terminal-content">
|
|
<span>resource <span class="txt-spe">"aws_elb"</span> <span class="txt-str">"frontend"</span> {</span>
|
|
<span> name = <span class="txt-str">"frontend-load-balancer"</span></span>
|
|
<span> listener {</span>
|
|
<span> instance_port = <span class="txt-int">8000</span></span>
|
|
<span> instance_protocol = <span class="txt-str">"http"</span></span>
|
|
<span> lb_port = <span class="txt-int">80</span></span>
|
|
<span> lb_protocol = <span class="txt-str">"http"</span></span>
|
|
<span> }</span>
|
|
<span> </span>
|
|
<span> instances = [<span class="txt-str">"<span class="txt-var">${aws_instance.app.*.id}</span>"</span>]</span>
|
|
<span>}</span>
|
|
<span> </span>
|
|
<span>resource <span class="txt-spe">"aws_instance"</span> <span class="txt-str">"app"</span> {</span>
|
|
<span> count = <span class="txt-int">5</span></span>
|
|
<span> </span>
|
|
<span> ami = <span class="txt-str">"ami-408c7f28"</span></span>
|
|
<span> instance_type = <span class="txt-str">"t1.micro"</span></span>
|
|
<span>}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="cta col-sm-12 col-lg-8 col-lg-offset-2" id="demo-cta">
|
|
<p class="lead" align="center">
|
|
The intro contains a walkthrough guide, introductory literature, and
|
|
a range of examples to experiment with Terraform.
|
|
</p>
|
|
<p align="center">
|
|
<a class="button primary" href="/intro/index.html">Get started</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="feature-skew" id="demo-bg"></div>
|
|
</section>
|
|
|
|
<section id="enterprise" class="marketing black">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-7">
|
|
<%= inline_svg "terraform-enterprise-logo.svg", width: 300 %>
|
|
<p class="lead">
|
|
Collaborative Infrastructure Automation for organizations. Collaborate
|
|
on Terraform configurations, validate changes, and automate
|
|
provisioning across providers.
|
|
</p>
|
|
<p>
|
|
<a class="button" href="https://www.hashicorp.com/terraform.html">Learn More</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|