2014-07-16 23:51:48 +02:00
|
|
|
<!-- Main jumbotron for a primary marketing message or call to action -->
|
|
|
|
<div id="jumbotron-mask">
|
|
|
|
<div id="jumbotron">
|
2014-07-26 10:00:59 +02:00
|
|
|
<div class="jumbotron-content" id="jumbotron-content">
|
2016-10-11 04:08:13 +02:00
|
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-sm-12">
|
2016-10-25 02:59:55 +02:00
|
|
|
<h2 class="tag-line" id="tag-line" style="visibility: hidden;">Write, plan, and create infrastructure as code</h2>
|
2016-10-11 04:08:13 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2014-07-24 05:35:57 +02:00
|
|
|
</div>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2016-10-05 23:05:07 +02:00
|
|
|
<div class="cta" id="primary-cta">
|
|
|
|
<div class="container">
|
|
|
|
<div class="row">
|
2016-10-11 04:08:13 +02:00
|
|
|
<div class="col-md-8">
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lead lower-opacity">Terraform enables you to safely and predictably create, change, and
|
2016-10-31 23:52:32 +01:00
|
|
|
improve production infrastructure. It is an open source tool that
|
|
|
|
codifies APIs into declarative configuration files that can be shared amongst team members,
|
2016-10-25 02:59:55 +02:00
|
|
|
treated as code, edited, reviewed, and versioned. </p>
|
2016-10-11 04:08:13 +02:00
|
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
|
|
<p class="center vert-container">
|
2016-10-06 20:55:13 +02:00
|
|
|
<a class="terra-btn" href="/intro/index.html">Get Started</a>
|
2016-10-05 23:05:07 +02:00
|
|
|
</p>
|
2016-10-11 04:08:13 +02:00
|
|
|
</div>
|
2017-03-06 20:05:07 +01:00
|
|
|
<div class="col-md-12">
|
|
|
|
<div class="vert-container announcement">
|
|
|
|
<p class="center">
|
2017-03-06 20:08:44 +01:00
|
|
|
Announcing Terraform Enterprise, collaboration for teams. <a class="link-highlight" href="https://hashicorp.com/terraform.html">Learn more.</a>
|
2017-03-06 20:05:07 +01:00
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
2016-10-05 23:05:07 +02:00
|
|
|
</div>
|
2016-10-11 04:08:13 +02:00
|
|
|
</div><!-- /. row -->
|
|
|
|
</div><!-- / .container -->
|
|
|
|
</div><!-- / .#primary-cta -->
|
2016-10-05 23:05:07 +02:00
|
|
|
|
2016-10-31 21:48:12 +01:00
|
|
|
<div class="temp-skew"></div>
|
|
|
|
|
2016-10-05 20:52:58 +02:00
|
|
|
<div id="feature-overview">
|
2014-07-16 23:51:48 +02:00
|
|
|
<div class="container">
|
2014-07-23 00:31:43 +02:00
|
|
|
<div class="row">
|
2016-10-03 21:20:26 +02:00
|
|
|
<div class="col-sm-12">
|
|
|
|
<h2>Features</h2>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div>
|
2016-10-12 02:08:42 +02:00
|
|
|
<div class="col-sm-4">
|
2016-10-31 20:18:45 +01:00
|
|
|
<a href="#write-section" class="feature-card feature-card-write">
|
2016-10-03 21:20:26 +02:00
|
|
|
<h3>Write</h3>
|
|
|
|
<p>Infrastructure as code</p>
|
2016-10-31 20:18:45 +01:00
|
|
|
</a>
|
2014-07-26 15:57:57 +02:00
|
|
|
</div>
|
2016-10-12 02:08:42 +02:00
|
|
|
<div class="col-sm-4">
|
2016-10-31 20:18:45 +01:00
|
|
|
<a href="#plan-section" class="feature-card feature-card-plan">
|
2016-10-03 21:20:26 +02:00
|
|
|
<h3>Plan</h3>
|
2016-10-25 02:59:55 +02:00
|
|
|
<p>Preview changes before applying</p>
|
2016-10-31 20:18:45 +01:00
|
|
|
</a>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div>
|
2016-10-12 02:08:42 +02:00
|
|
|
<div class="col-sm-4">
|
2016-10-31 20:18:45 +01:00
|
|
|
<a href="#create-section" class="feature-card feature-card-create">
|
2016-10-03 21:20:26 +02:00
|
|
|
<h3>Create</h3>
|
2016-10-25 02:59:55 +02:00
|
|
|
<p>Reproducible infrastructure</p>
|
2016-10-31 20:18:45 +01:00
|
|
|
</a>
|
2014-07-26 15:57:57 +02:00
|
|
|
</div>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div>
|
2016-10-03 21:20:26 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2014-07-16 23:51:48 +02:00
|
|
|
|
2016-10-05 20:52:58 +02:00
|
|
|
<div class="skew-item feature" id="feature-write">
|
2016-10-03 21:51:57 +02:00
|
|
|
<div class="container">
|
2016-10-31 20:18:45 +01:00
|
|
|
<div id="write-section" class="row">
|
2016-10-03 21:51:57 +02:00
|
|
|
<div class="col-sm-12">
|
|
|
|
<h2>Infrastructure as code</h2>
|
2017-02-14 01:17:57 +01:00
|
|
|
<p class="lead sub-black">Define infrastructure as code to increase operator productivity and transparency.</p>
|
2016-10-03 21:51:57 +02:00
|
|
|
</div>
|
2016-10-12 19:55:46 +02:00
|
|
|
<img class="feature-image" id="feature-image-write-sm-screen" src="/assets/images/feature-write-bg.svg" />
|
2016-10-03 21:51:57 +02:00
|
|
|
<div class="col-sm-4">
|
|
|
|
<h3>Collaborate & share</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">Terraform configuration can be stored in version control,
|
2016-10-03 21:51:57 +02:00
|
|
|
shared, and collaborated on by teams of operators.</p>
|
|
|
|
<h3>Evolve your infrastructure</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">Track the complete history of infrastructure versions.</p>
|
2016-10-03 21:51:57 +02:00
|
|
|
<h3>Automation friendly</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">If it can be codified, it can be automated.</p>
|
2016-10-03 21:51:57 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div> <!-- /container -->
|
2016-10-10 07:45:56 +02:00
|
|
|
<div class="feature-skew" id="feature-write-bg">
|
2016-10-12 19:55:46 +02:00
|
|
|
<img class="feature-image" id="feature-image-write-lg-screen" src="/assets/images/feature-write-bg.svg" />
|
2016-10-10 07:45:56 +02:00
|
|
|
</div>
|
2016-10-03 21:51:57 +02:00
|
|
|
</div> <!-- /feature -->
|
2014-07-23 04:39:04 +02:00
|
|
|
|
2016-10-05 20:52:58 +02:00
|
|
|
<div class="skew-item feature" id="feature-plan">
|
2016-10-03 22:06:23 +02:00
|
|
|
<div class="container">
|
2016-10-31 20:18:45 +01:00
|
|
|
<div id="plan-section" class="row">
|
2016-10-03 22:06:23 +02:00
|
|
|
<div class="col-sm-12">
|
|
|
|
<h2>One safe workflow across providers</h2>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lead lower-opacity">Terraform provides an elegant user experience for
|
2016-10-03 22:06:23 +02:00
|
|
|
operators to safely and predictably make changes to infrastructure.</p>
|
|
|
|
</div>
|
2016-10-14 20:34:27 +02:00
|
|
|
<div class="col-sm-12">
|
|
|
|
<img class="feature-image" id="feature-image-plan-sm-screen" src="/assets/images/feature-plan-sm-bg.svg" />
|
|
|
|
<img class="feature-image" id="feature-image-plan-lg-screen" src="/assets/images/feature-plan-bg.svg" />
|
|
|
|
</div>
|
2016-10-03 22:06:23 +02:00
|
|
|
<div class="col-sm-4">
|
|
|
|
<h3>Map resource dependencies</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lower-opacity">Understand how a minor change could have potential cascading effects
|
2016-10-03 22:06:23 +02:00
|
|
|
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>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lower-opacity">Separating plans and applies reduces mistakes and uncertainty at
|
2016-10-03 22:06:23 +02:00
|
|
|
scale. Plans show operators what would happen, applies execute
|
|
|
|
changes.</p>
|
|
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
|
|
<h3>One workflow</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lower-opacity">Use Terraform to create resources across all major infrastructure
|
2016-10-03 22:06:23 +02:00
|
|
|
providers (AWS, GCP, Azure, OpenStack, VMware, and more).</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div> <!-- /container -->
|
2016-10-05 20:52:58 +02:00
|
|
|
<div class="feature-skew" id="feature-plan-bg"></div>
|
2016-10-03 22:06:23 +02:00
|
|
|
</div> <!-- /feature -->
|
|
|
|
|
2016-10-05 20:52:58 +02:00
|
|
|
<div class="skew-item feature" id="feature-create">
|
2016-10-03 22:10:31 +02:00
|
|
|
<div class="container">
|
2016-10-31 20:18:45 +01:00
|
|
|
<div id="create-section" class="row">
|
2016-10-14 20:34:27 +02:00
|
|
|
<div class="col-sm-6">
|
2016-10-31 23:52:32 +01:00
|
|
|
<h2>Reproducible infrastructure</h2>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lead sub-black">Terraform lets operators easily use the same
|
2016-10-31 23:52:32 +01:00
|
|
|
configurations in multiple places to reduce mistakes and save time.</p>
|
2016-10-03 22:10:31 +02:00
|
|
|
</div>
|
2016-10-14 20:34:27 +02:00
|
|
|
<div class="col-sm-6">
|
2016-10-14 20:35:32 +02:00
|
|
|
<img class="feature-image" id="feature-image-create" src="/assets/images/feature-create-bg.svg" />
|
2016-10-14 20:34:27 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
2016-10-03 22:10:31 +02:00
|
|
|
<div class="col-sm-4">
|
2016-10-31 23:52:32 +01:00
|
|
|
<h3>Environment parity</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">Use the same Terraform configuration to provision identical staging,
|
2016-10-31 23:52:32 +01:00
|
|
|
QA, and production environments.</p>
|
2016-10-03 22:10:31 +02:00
|
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
|
|
<h3>Shareable modules</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">Common Terraform configurations can be packaged as modules and used
|
2016-10-03 22:10:31 +02:00
|
|
|
across teams and organizations.</p>
|
|
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
|
|
<h3>Combine multiple providers consistently</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">Terraform allows you to effortlessly combine high-level system
|
2016-10-03 22:10:31 +02:00
|
|
|
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> <!-- /container -->
|
2016-10-14 20:35:32 +02:00
|
|
|
<div class="feature-skew" id="feature-create-bg"></div>
|
2016-10-03 22:10:31 +02:00
|
|
|
</div> <!-- /feature -->
|
|
|
|
|
2017-02-23 20:25:19 +01:00
|
|
|
<div class="skew-item" id="latest-announcement">
|
|
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-offset-1 col-md-11 col-sm-12">
|
|
|
|
<h2>Latest</h2>
|
|
|
|
</div>
|
|
|
|
<div class="latest-col latest-col-left col-md-4 col-md-offset-1 col-sm-12">
|
|
|
|
<div class="latest-item">
|
|
|
|
<img src="<%= image_path('webinar-image.jpg') %>" srcset="<%= image_path('webinar-image@2x.jpg') %> 2x, <%= image_path('webinar-image.jpg') %> 1x">
|
|
|
|
<h3 class="latest-title">Join the live webinar to learn about provisioning Microsoft Azure with HashiCorp Terraform and see a demo</h3>
|
|
|
|
<p>
|
|
|
|
<a class="outline-btn small-outline-btn" href="http://hashi.co/2lJIzDl">Register Now</a>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="latest-col latest-col-right col-md-6 col-sm-12">
|
|
|
|
<div class="latest-item latest-item-text">
|
|
|
|
<h3 class="latest-title">Terraform 0.8 Released</h3>
|
|
|
|
<p class="lower-opacity">
|
|
|
|
Terraform continues to be HashiCorp's fastest growing project. Read the highlights from the 0.8 release
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<a class="outline-btn small-outline-btn" href="https://www.hashicorp.com/blog/terraform-0-8.html">Read more</a>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="latest-item latest-item-text">
|
|
|
|
<h3 class="">Applying Graph Theory to Infrastructure As Code</h3>
|
|
|
|
<p class="lower-opacity">
|
|
|
|
Watch this talk from HashiConf 2016 where we explore the graph theory at the heart of Terraform's orchestration engine.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<a class="outline-btn small-outline-btn" href="https://www.youtube.com/watch?v=4Pd9NrZSbGU">Watch Video</a>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div><!-- /.container -->
|
|
|
|
<div class="feature-skew" id="latest-announcement-bg"></div>
|
|
|
|
</div><!-- /#latest-announcement -->
|
|
|
|
|
2014-07-29 10:56:17 +02:00
|
|
|
<div class="skew-item" id="demos">
|
2014-07-16 23:51:48 +02:00
|
|
|
<div class="container">
|
|
|
|
<div class="terminals row">
|
2016-10-04 20:07:55 +02:00
|
|
|
<div class="col-sm-12">
|
|
|
|
<h2>Examples</h2>
|
|
|
|
</div>
|
2014-07-16 23:51:48 +02:00
|
|
|
|
2016-10-05 03:08:55 +02:00
|
|
|
<div class="col-md-6 explantion">
|
2016-10-25 02:59:55 +02:00
|
|
|
<h3>Composing Resources</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">Use attributes from other resources to create an infrastructure
|
2016-10-25 02:59:55 +02:00
|
|
|
composed of resources across multiple providers.
|
2014-07-16 23:51:48 +02:00
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="terminal-item col-xs-12 col-lg-12">
|
|
|
|
<div class="terminal">
|
|
|
|
<header>
|
2014-07-26 15:57:57 +02:00
|
|
|
<h4>Example Configuration</h4>
|
2014-07-16 23:51:48 +02:00
|
|
|
</header>
|
|
|
|
<div class="terminal-window">
|
2014-07-25 20:21:29 +02:00
|
|
|
<div class="">
|
2014-07-16 23:51:48 +02:00
|
|
|
<div class="display">
|
2014-07-28 19:48:25 +02:00
|
|
|
<p>resource <span class="txt-spe">"digitalocean_droplet"</span> <span class="txt-str">"web"</span> {</p>
|
2016-10-25 02:59:55 +02:00
|
|
|
<p> name = <span class="txt-str">"tf-web"</span></p>
|
|
|
|
<p> size = <span class="txt-str">"512mb"</span></p>
|
|
|
|
<p> image = <span class="txt-str">"centos-5-8-x32"</span></p>
|
|
|
|
<p> region = <span class="txt-str">"sfo1"</span></p>
|
2014-07-26 15:57:57 +02:00
|
|
|
<p>}</p>
|
|
|
|
<p> </p>
|
2014-07-28 19:48:25 +02:00
|
|
|
<p>resource <span class="txt-spe">"dnsimple_record"</span> <span class="txt-str">"hello"</span> {</p>
|
2016-10-25 02:59:55 +02:00
|
|
|
<p> domain = <span class="txt-str">"example.com"</span></p>
|
|
|
|
<p> name = <span class="txt-str">"test"</span></p>
|
|
|
|
<p> value = <span class="txt-str">"<span class="txt-var">${digitalocean_droplet.web.ipv4_address}</span>"</span></p>
|
|
|
|
<p> type = <span class="txt-str">"A"</span></p>
|
2014-07-26 15:57:57 +02:00
|
|
|
<p>}</p>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div> <!-- /.terminal-item -->
|
|
|
|
|
2016-10-05 03:08:55 +02:00
|
|
|
<div class="col-md-6 explantion">
|
2016-10-04 20:07:55 +02:00
|
|
|
<h3>Fast, Simplified Interaction</h3>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="sub-black">Simple and intuitive configuration makes even the most complicated
|
2016-10-05 20:52:58 +02:00
|
|
|
services approachable: no more web consoles, loading bars, or
|
|
|
|
confusing CLI clients.
|
2014-07-16 23:51:48 +02:00
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="terminal-item col-xs-12 col-lg-12">
|
|
|
|
<div class="terminal">
|
|
|
|
<header>
|
2014-07-26 15:57:57 +02:00
|
|
|
<h4>Example Configuration</h4>
|
2014-07-16 23:51:48 +02:00
|
|
|
</header>
|
|
|
|
<div class="terminal-window">
|
2014-07-25 20:21:29 +02:00
|
|
|
<div class="">
|
2014-07-16 23:51:48 +02:00
|
|
|
<div class="display">
|
2014-07-28 19:48:25 +02:00
|
|
|
<p>resource <span class="txt-spe">"aws_elb"</span> <span class="txt-str">"frontend"</span> {</p>
|
2017-02-17 21:36:57 +01:00
|
|
|
<p> name = <span class="txt-str">"frontend-load-balancer"</span></p>
|
|
|
|
<p> listener {</p>
|
|
|
|
<p> instance_port = <span class="txt-int">8000</span></p>
|
|
|
|
<p> instance_protocol = <span class="txt-str">"http"</span></p>
|
|
|
|
<p> lb_port = <span class="txt-int">80</span></p>
|
|
|
|
<p> lb_protocol = <span class="txt-str">"http"</span></p>
|
|
|
|
<p> }</p>
|
2014-07-27 18:07:23 +02:00
|
|
|
<p> </p>
|
2017-02-17 21:36:57 +01:00
|
|
|
<p> instances = [<span class="txt-str">"<span class="txt-var">${aws_instance.app.*.id}</span>"</span>]</p>
|
2014-07-26 15:57:57 +02:00
|
|
|
<p>}</p>
|
|
|
|
<p> </p>
|
2014-07-28 19:48:25 +02:00
|
|
|
<p>resource <span class="txt-spe">"aws_instance"</span> <span class="txt-str">"app"</span> {</p>
|
2017-02-17 21:36:57 +01:00
|
|
|
<p> count = <span class="txt-int">5</span></p>
|
2015-12-15 23:20:24 +01:00
|
|
|
<p> </p>
|
2017-02-17 21:36:57 +01:00
|
|
|
<p> ami = <span class="txt-str">"ami-408c7f28"</span></p>
|
|
|
|
<p> instance_type = <span class="txt-str">"t1.micro"</span></p>
|
2014-07-26 15:57:57 +02:00
|
|
|
<p>}</p>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div> <!-- /.terminal-item -->
|
2016-10-11 17:55:19 +02:00
|
|
|
<div class="cta col-sm-12 col-lg-8 col-lg-offset-2" id="demo-cta">
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lead lower-opacity">The intro contains a walkthrough guide, introductory literature, and
|
2016-10-05 03:08:55 +02:00
|
|
|
a range of examples to experiment with Terraform.</p>
|
|
|
|
<p>
|
2016-10-06 20:55:13 +02:00
|
|
|
<a class="terra-btn" href="/intro/index.html">Get started</a>
|
2016-10-05 03:08:55 +02:00
|
|
|
</p>
|
|
|
|
</div>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div>
|
2016-10-05 22:26:19 +02:00
|
|
|
</div><!-- /.container -->
|
2014-07-29 10:56:17 +02:00
|
|
|
<div class="feature-skew" id="demo-bg"></div>
|
2014-07-16 23:51:48 +02:00
|
|
|
</div><!-- /#demos -->
|
2016-10-05 04:12:05 +02:00
|
|
|
|
2016-10-05 22:13:31 +02:00
|
|
|
<div class="skew-item" id="enterprise-intro">
|
2016-10-05 04:27:35 +02:00
|
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-sm-12">
|
2016-10-06 01:47:07 +02:00
|
|
|
<h2><span>Terraform Enterprise</span></h2>
|
2017-02-14 01:16:20 +01:00
|
|
|
<p class="lead lower-opacity">Collaborative Infrastructure Automation for
|
2016-10-31 23:52:32 +01:00
|
|
|
organizations. Collaborate on Terraform configurations,
|
|
|
|
validate changes, and automate provisioning across providers.</p>
|
2016-10-05 04:27:35 +02:00
|
|
|
<p>
|
2016-10-31 23:52:32 +01:00
|
|
|
<a class="outline-btn" href="https://www.hashicorp.com/terraform.html">Learn More</a>
|
2016-10-05 04:27:35 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2016-10-05 22:26:19 +02:00
|
|
|
</div><!-- / .container -->
|
2016-10-05 22:13:31 +02:00
|
|
|
<div class="feature-skew" id="enterprise-intro-bg"></div>
|
2017-02-23 20:25:19 +01:00
|
|
|
</div><!-- / #enterprise-intro -->
|