Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[doc] Update Terraform use cases #36013

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Conversation

BrianMMcClain
Copy link
Contributor

Update the Terraform "Use Cases" documentation with recent examples and content.

@BrianMMcClain BrianMMcClain added 1.8-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged 1.9-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged 1.10-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged labels Nov 15, 2024
@BrianMMcClain BrianMMcClain requested review from a team as code owners November 15, 2024 16:18
Copy link
Contributor

@rkoron007 rkoron007 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! I added some style requests and suggestions, but feel free to ignore anything that doesn't feel good!

## Multi-Cloud Deployment
## Codify your infrastructure

By capturing and building your infrastructure as code, you make your deployments faster, repeatable, and easier to collaborate on. Terraform codifies cloud APIs into declarative configuration files, using HashiCorp Configuration Language (HCL). You define the desired state of your infrastructure in HCL and Terraform will deploy and configure the resources to match your configuration.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
By capturing and building your infrastructure as code, you make your deployments faster, repeatable, and easier to collaborate on. Terraform codifies cloud APIs into declarative configuration files, using HashiCorp Configuration Language (HCL). You define the desired state of your infrastructure in HCL and Terraform will deploy and configure the resources to match your configuration.
By capturing and building your infrastructure as code, you make your deployments faster, repeatable, and easier to collaborate on. Terraform codifies cloud APIs into declarative configuration files using HashiCorp Configuration Language (HCL). You define the desired state of your infrastructure in HCL, and Terraform deploys and configures resources to match your configuration.


By capturing and building your infrastructure as code, you make your deployments faster, repeatable, and easier to collaborate on. Terraform codifies cloud APIs into declarative configuration files, using HashiCorp Configuration Language (HCL). You define the desired state of your infrastructure in HCL and Terraform will deploy and configure the resources to match your configuration.

In addition to configuring your networks, servers, and databases, you can also use Terraform to manage other resources like containers, machine images, web services, and observability services.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In addition to configuring your networks, servers, and databases, you can also use Terraform to manage other resources like containers, machine images, web services, and observability services.
You can use Terraform to configure your networks, servers, and databases, as well as manage other your resources such as containers, machine images, web services, and observability services.

In addition to configuring your networks, servers, and databases, you can also use Terraform to manage other resources like containers, machine images, web services, and observability services.

### Resources

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add an intro sentence to this list please?

- Read HashiCorp's Well-Architected Framework to learn how to [codify your infrastructure with Terraform](/operational-excellence/operational-excellence-manage-your-infrastructure-components-with-terraform).

## Multi-cloud deployment

Provisioning infrastructure across multiple clouds increases fault-tolerance, allowing for more graceful recovery from cloud provider outages. However, multi-cloud deployments add complexity because each provider has its own interfaces, tools, and workflows. Terraform lets you use the same workflow to manage multiple providers and handle cross-cloud dependencies. This simplifies management and orchestration for large-scale, multi-cloud infrastructures.

### Resources

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[For this and the rest of the article] could you please add intro sentences for the lists?

Provisioning infrastructure across multiple clouds increases fault-tolerance, allowing for more graceful recovery from cloud provider outages. However, multi-cloud deployments add complexity because each provider has its own interfaces, tools, and workflows. Terraform lets you use the same workflow to manage multiple providers and handle cross-cloud dependencies. This simplifies management and orchestration for large-scale, multi-cloud infrastructures.

### Resources

- Learn how to [standardize artifacts across multiple cloud providers] with Terraform and Packer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you are missing a link?

- Try our [Deploy Federated Multi-Cloud Kubernetes Clusters](/terraform/tutorials/networking/multicloud-kubernetes) tutorial to provision Kubernetes clusters in both Azure and AWS environments, configure Consul federation with mesh gateways across the two clusters, and deploy microservices across the two clusters to verify federation.
- Browse the [Terraform Registry](https://registry.terraform.io/browse/providers) to find thousands of publicly available providers.

## Multi-environment deployments

You may have staging or QA environments that you use to test new applications before releasing them in production. As the production environment grows larger and more complex, it can be increasingly difficult to maintain an up-to-date environment for each stage of the development process. Terraform Stacks let you split your Terraform configuration into components and then deploy and manage those components across multiple environments. You can manage the lifecycle of each deployment separately, making it easy to validate changes throughout your deployments.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got a little carried away with my rewrite, but I think this still feels clear? Feel free to disregard anything you don't like!

Suggested change
You may have staging or QA environments that you use to test new applications before releasing them in production. As the production environment grows larger and more complex, it can be increasingly difficult to maintain an up-to-date environment for each stage of the development process. Terraform Stacks let you split your Terraform configuration into components and then deploy and manage those components across multiple environments. You can manage the lifecycle of each deployment separately, making it easy to validate changes throughout your deployments.
Application development workflows can depend on multiple environments to test features, such as QA and staging, before releasing them to production. As production grows more complex, it becomes increasingly difficult to synchronize deployments and keep them up-to-date for each stage of the development process.
[Terraform Stacks](/terraform/language/stacks) let you split your Terraform configuration into components and then deploy and manage those components across multiple environments. You can manage the lifecycle of each deployment separately, making it easy to validate changes throughout your deployments.


### Resources

- Read the [Deploy a Stack with HCP Terraform](/terraform/tutorials/cloud/stacks-deploy) tutorial to get hands-on experience. You will create a Terraform Stack that deploys an AWS Lambda function across a development, test, and production environment.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intro sentence please! Also would it be too much to add the stacks docs too? There is a page about stacks use cases that feels very on-brand with the rest of the article: https://developer.hashicorp.com/terraform/language/stacks/use-cases

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.8-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged 1.9-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged 1.10-backport If you add this label to a PR before merging, backport-assistant will open a new PR once merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants