Update page description metadata
This commit is contained in:
parent
e92f030662
commit
0ab2012d77
|
@ -3,7 +3,7 @@ layout: "intro"
|
||||||
page_title: "Use Cases"
|
page_title: "Use Cases"
|
||||||
sidebar_current: "use-cases"
|
sidebar_current: "use-cases"
|
||||||
description: |-
|
description: |-
|
||||||
Before understanding use cases, it's useful to know what Terraform is. This page lists some concrete use cases for Terraform, but the possible use cases are much broader than what we cover. Due to its extensible nature, providers and provisioners can be added to further extend Terraform's ability to manipulate resources.
|
Learn common use cases for Terraform including Heroku apps, self-service clusters, and multi-cloud deployment.
|
||||||
---
|
---
|
||||||
|
|
||||||
# Use Cases
|
# Use Cases
|
||||||
|
@ -15,16 +15,11 @@ can be added to further extend Terraform's ability to manipulate resources.
|
||||||
|
|
||||||
## Heroku App Setup
|
## Heroku App Setup
|
||||||
|
|
||||||
Heroku is a popular PaaS for hosting web apps. Developers create an app, and then
|
Heroku is a popular PaaS for hosting web apps. Developers create an app, and then attach add-ons, such as a database, or email provider. One of the best features is
|
||||||
attach add-ons, such as a database, or email provider. One of the best features is
|
|
||||||
the ability to elastically scale the number of dynos or workers. However, most
|
the ability to elastically scale the number of dynos or workers. However, most
|
||||||
non-trivial applications quickly need many add-ons and external services.
|
non-trivial applications quickly need many add-ons and external services.
|
||||||
|
|
||||||
Terraform can be used to codify the setup required for a Heroku application, ensuring
|
Terraform can be used to codify the setup required for a Heroku application, ensuring that all the required add-ons are available, but it can go even further: configuring DNSimple to set a CNAME, or setting up Cloudflare as a CDN for the app. Best of all, Terraform can do all of this in under 30 seconds without using a web interface.
|
||||||
that all the required add-ons are available, but it can go even further: configuring
|
|
||||||
DNSimple to set a CNAME, or setting up Cloudflare as a CDN for the
|
|
||||||
app. Best of all, Terraform can do all of this in under 30 seconds without
|
|
||||||
using a web interface.
|
|
||||||
|
|
||||||
## Multi-Tier Applications
|
## Multi-Tier Applications
|
||||||
|
|
||||||
|
@ -33,12 +28,7 @@ a pool of web servers that use a database tier. Additional tiers get added for A
|
||||||
caching servers, routing meshes, etc. This pattern is used because the tiers can be scaled
|
caching servers, routing meshes, etc. This pattern is used because the tiers can be scaled
|
||||||
independently and provide a separation of concerns.
|
independently and provide a separation of concerns.
|
||||||
|
|
||||||
Terraform is an ideal tool for building and managing these infrastructures. Each tier can
|
Terraform is an ideal tool for building and managing these infrastructures. Each tier can be described as a collection of resources, and the dependencies between each tier are handled automatically; Terraform will ensure the database tier is available before the web servers are started and that the load balancers are aware of the web nodes. Each tier can then be scaled easily using Terraform by modifying a single `count` configuration value. Because the creation and provisioning of a resource is codified and automated, elastically scaling
|
||||||
be described as a collection of resources, and the dependencies between each tier are handled
|
|
||||||
automatically; Terraform will ensure the database tier is available before the web servers
|
|
||||||
are started and that the load balancers are aware of the web nodes. Each tier can then be
|
|
||||||
scaled easily using Terraform by modifying a single `count` configuration value. Because
|
|
||||||
the creation and provisioning of a resource is codified and automated, elastically scaling
|
|
||||||
with load becomes trivial.
|
with load becomes trivial.
|
||||||
|
|
||||||
## Self-Service Clusters
|
## Self-Service Clusters
|
||||||
|
@ -48,10 +38,7 @@ operations team to manage a large and growing infrastructure. Instead it becomes
|
||||||
more attractive to make "self-serve" infrastructure, allowing product teams to
|
more attractive to make "self-serve" infrastructure, allowing product teams to
|
||||||
manage their own infrastructure using tooling provided by the central operations team.
|
manage their own infrastructure using tooling provided by the central operations team.
|
||||||
|
|
||||||
Using Terraform, the knowledge of how to build and scale a service can be codified
|
Using Terraform, the knowledge of how to build and scale a service can be codified in a configuration. Terraform configurations can be shared within an organization enabling customer teams to use the configuration as a black box and use Terraform as a tool to manage their services.
|
||||||
in a configuration. Terraform configurations can be shared within an organization
|
|
||||||
enabling customer teams to use the configuration as a black box and use Terraform as
|
|
||||||
a tool to manage their services.
|
|
||||||
|
|
||||||
## Software Demos
|
## Software Demos
|
||||||
|
|
||||||
|
@ -61,9 +48,7 @@ for demos, it is still very challenging to demo software on real infrastructure
|
||||||
which more closely matches production environments.
|
which more closely matches production environments.
|
||||||
|
|
||||||
Software writers can provide a Terraform configuration to create, provision and
|
Software writers can provide a Terraform configuration to create, provision and
|
||||||
bootstrap a demo on cloud providers like AWS. This allows end users to easily demo
|
bootstrap a demo on cloud providers like AWS. This allows end users to easily demo the software on their own infrastructure, and even enables tweaking parameters like cluster size to more rigorously test tools at any scale.
|
||||||
the software on their own infrastructure, and even enables tweaking parameters like
|
|
||||||
cluster size to more rigorously test tools at any scale.
|
|
||||||
|
|
||||||
## Disposable Environments
|
## Disposable Environments
|
||||||
|
|
||||||
|
@ -87,11 +72,8 @@ allows the network to better support the applications running on top. Most SDN
|
||||||
implementations have a control layer and infrastructure layer.
|
implementations have a control layer and infrastructure layer.
|
||||||
|
|
||||||
Terraform can be used to codify the configuration for software defined networks.
|
Terraform can be used to codify the configuration for software defined networks.
|
||||||
This configuration can then be used by Terraform to automatically setup and modify
|
This configuration can then be used by Terraform to automatically setup and modify settings by interfacing with the control layer. This allows configuration to be
|
||||||
settings by interfacing with the control layer. This allows configuration to be
|
versioned and changes to be automated. As an example, [AWS VPC](https://aws.amazon.com/vpc/) is one of the most commonly used SDN implementations, and [can be configured by Terraform](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpc).
|
||||||
versioned and changes to be automated. As an example, [AWS VPC](https://aws.amazon.com/vpc/)
|
|
||||||
is one of the most commonly used SDN implementations, and [can be configured by
|
|
||||||
Terraform](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpc).
|
|
||||||
|
|
||||||
## Resource Schedulers
|
## Resource Schedulers
|
||||||
|
|
||||||
|
@ -108,13 +90,9 @@ running the schedulers as well as provisioning onto the scheduled grid.
|
||||||
|
|
||||||
## Multi-Cloud Deployment
|
## Multi-Cloud Deployment
|
||||||
|
|
||||||
It's often attractive to spread infrastructure across multiple clouds to increase
|
It's often attractive to spread infrastructure across multiple clouds to increase fault-tolerance. By using only a single region or cloud provider, fault tolerance is limited by the availability of that provider. Having a multi-cloud deployment allows for more graceful recovery of the loss of a region or entire provider.
|
||||||
fault-tolerance. By using only a single region or cloud provider, fault tolerance
|
|
||||||
is limited by the availability of that provider. Having a multi-cloud deployment
|
|
||||||
allows for more graceful recovery of the loss of a region or entire provider.
|
|
||||||
|
|
||||||
Realizing multi-cloud deployments can be very challenging as many existing tools
|
Realizing multi-cloud deployments can be very challenging as many existing tools
|
||||||
for infrastructure management are cloud-specific. Terraform is cloud-agnostic
|
for infrastructure management are cloud-specific. Terraform is cloud-agnostic
|
||||||
and allows a single configuration to be used to manage multiple providers, and
|
and allows a single configuration to be used to manage multiple providers, and
|
||||||
to even handle cross-cloud dependencies. This simplifies management and orchestration,
|
to even handle cross-cloud dependencies. This simplifies management and orchestration, helping operators build large-scale multi-cloud infrastructures.
|
||||||
helping operators build large-scale multi-cloud infrastructures.
|
|
||||||
|
|
Loading…
Reference in New Issue