Skip to content

Commit

Permalink
Add Terraform 1.1 upgrade guide (#264)
Browse files Browse the repository at this point in the history
  • Loading branch information
infraredgirl authored Apr 8, 2022
1 parent ddcc7f4 commit bfb6f6c
Show file tree
Hide file tree
Showing 15 changed files with 488 additions and 7 deletions.
4 changes: 4 additions & 0 deletions _docs-sources/guides/stay-up-to-date/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ import CardGroup from "/src/components/CardGroup"

<CardGroup cols={1} gap="1rem" stacked equalHeightRows={false} commonCardProps={{padding: "1.25rem"}}>

<Card
title="Update to version 1.1"
href="/guides/stay-up-to-date/terraform/terraform-1.1"
/>
<Card
title="Update to version 1.X"
href="/guides/stay-up-to-date/terraform/terraform-1.x"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Core Concepts

[Terraform 1.1.0 was released on December 08,
2021](https://www.hashicorp.com/blog/terraform-1-1-improves-refactoring-and-the-cloud-cli-experience).
Some of the major new features in 1.1 include:

- Easier and Safer Refactoring with moved Statements
- An Improved CLI Experience for Terraform Cloud and Enterprise

For more info, check out the for a complete introduction, check out the
[announcement blog
post](https://www.hashicorp.com/blog/terraform-1-1-improves-refactoring-and-the-cloud-cli-experience).
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
sidebar_label: Update to Terraform 1.0
---

# Step 1: update your code to be compatible with Terraform 1.0

If you haven’t already, you need to:

1. Update your code to work with Terraform 1.0. Do NOT skip from, say, 0.11, straight to 1.1. You MUST update to
1.0.0 or above first!

1. If you’re still on Terraform 0.11 or older, see our
[Terraform 0.12 upgrade guide](../../terraform-12/index.md).

2. If you’re still on Terraform 0.12, see our
[Terraform 0.13 upgrade guide](../../terraform-13/index.md).

3. If you’re still on Terraform 0.13, see our
[Terraform 0.14 upgrade guide](../../terraform-14/index.md).

4. If you’re still on Terraform 0.14, see our
[Terraform 0.15 upgrade guide](../../terraform-15/index.md).

5. If you’re still on Terraform 0.15, see our
[Terraform 1.x upgrade guide](../../terraform-1.x/index.md).

2. Update all your Gruntwork modules to the latest versions just _before_ the TF 1.1 versions in the [compatibility
table](/guides/stay-up-to-date/terraform/terraform-1.1/deployment-walkthrough/step-2-update-references-to-the-gruntwork-infrastructure-as-code-library#version-compatibility-table). The upgrade will be much easier and less error prone if you keep the number of version jumps as small
as possible.
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
sidebar_label: Update Gruntwork IaC Module References
---

# Step 2: update references to the Gruntwork Infrastructure as Code Library

In order to take advantage of the Terraform 1.1, you need to update your
references to the Gruntwork Infrastructure as Code Library to use a compatible
version. We (Gruntwork) have gone through all our modules in the library to test
and update the code to be compatible with Terraform 1.1. As a customer, you need
to update to the proper versions of the Gruntwork library to pick up the
fixes/changes that we made to be compatible. Refer to [the "Updating to new versions" section of
"Stay Up to Date"](/guides/working-with-code/versioning#updating-to-new-versions#updating)
for instructions on how to update the versions in your code.

The releases of the modules from the Gruntwork Infrastructure as Code Library that correspond with the
Terraform 1.1 upgrade don't include any backwards incompatible changes.
Therefore, the only changes that you will need to do are version number bumps.

:::caution

Gruntwork follows [semantic
versioning](/guides/working-with-code/versioning#semantic-versioning).
For any pre-1.0 modules, this means that version updates to the minor version
are considered backwards incompatible releases for any version updates prior to
1.0.0 release. Make sure to read the release notes for the relevant modules any
time you are updating minor versions! Note that you will want to read the
release notes for each minor version that is updated (e.g., if you are going
from `v0.5.x` to `v0.9.x`, you will want to read the notes for `v0.6.0`,
`v0.7.0`, `v0.8.0`, and `v0.9.0` to get the full list of backwards incompatible
updates).

:::

The following table provides a summary of all the relevant Gruntwork AWS modules
and the respective versions that are compatible with Terraform 1.1:

## Version Compatibility Table

<table>
<colgroup>
<col />
<col />
</colgroup>
<tbody>
<tr className="odd">
<td><p><strong>Gruntwork Repo</strong></p></td>
<td><p><strong>Minimum version with Terraform 1.1 support</strong></p></td>
</tr>
<tr className="even">
<td><p>Terratest</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/Terratest/releases/tag/v0.40.0">v0.40.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>Terragrunt</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/Terragrunt/releases/tag/v0.36.0">v0.36.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-utilities</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-utilities/releases/tag/v0.7.0">v0.7.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-vpc</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-vpc/releases/tag/v0.20.0">v0.20.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-asg</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-asg/releases/tag/v0.17.0">v0.17.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-server</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-server/releases/tag/v0.14.0">v0.14.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-lambda</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-lambda/releases/tag/v0.17.0">v0.17.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-security</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-security/releases/tag/v0.62.0">v0.62.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-load-balancer</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-load-balancer/releases/tag/v0.28.0">v0.27.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-data-storage</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-data-storage/releases/tag/v0.23.0">v0.23.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-cache</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-cache/releases/tag/v0.17.0">v0.17.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-messaging</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-messaging/releases/tag/v0.8.0">v0.8.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-static-assets</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-static-assets/releases/tag/v0.13.0">v0.13.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-monitoring</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-monitoring/releases/tag/v0.31.0">v0.31.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-openvpn</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-openvpn/releases/tag/v0.21.0">v0.21.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-ecs</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-ecs/releases/tag/v0.32.0">v0.32.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-ci</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-ci/releases/tag/v0.44.0">v0.44.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-eks</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-eks/releases/tag/v0.49.0">v0.49.0</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-kubernetes-namespace</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-kubernetes-namespace/releases/tag/v0.5.0">v0.5.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-cis-service-catalog</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-cis-service-catalog/releases/tag/v0.31.0">v0.31.0</a></strong></p></td>
</tr>
<tr className="even">
<td><p>terraform-aws-architecture-catalog</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-architecture-catalog/releases/tag/v0.0.27">v0.0.27</a></strong></p></td>
</tr>
<tr className="odd">
<td><p>terraform-aws-service-catalog</p></td>
<td><p><strong><a href="https://github.com/gruntwork-io/terraform-aws-service-catalog/releases/tag/v0.77.0">v0.77.0</a></strong></p></td>
</tr>
</tbody>
</table>
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Update to Terraform 1.1

This guide will walk you through how to update any code that depends on the
[Gruntwork Infrastructure as Code
Library](https://gruntwork.io/infrastructure-as-code-library/) to [Terraform
1.1](https://www.terraform.io/language/upgrade-guides/1-1). Terraform v1.1 has
no backwards incompatible changes compared with Terraform v1.0.

# What you’ll learn in this guide

This guide consists of two main sections:

<div className="dlist">

#### [Core Concepts](core-concepts.md)

An overview of Terraform 1.1.

#### [Deployment walkthrough](deployment-walkthrough/step-1-update-your-code-to-be-compatible-with-terraform-1-x.md)

The steps you need to take to update your code relying on the Gruntwork Infrastructure as Code library to work with
Terraform 1.1. Includes a
[version compatibility table](deployment-walkthrough/step-2-update-references-to-the-gruntwork-infrastructure-as-code-library.md#version-compatibility-table) you can use as a reference to know which Gruntwork Repo version
tag is compatible with Terraform 1.1.

</div>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[Terraform 1.0.0 was released on June 08,
2021](https://www.hashicorp.com/blog/announcing-hashicorp-terraform-1-0-general-availability).
Some of the major new features in 0.15 include:
Some of the major new features in 1.0 include:

- A more stable state file format that will be compatible with Terraform 0.14, 0.15, and, once it’s released, 1.0.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ An overview of Terraform 1.x.
The steps you need to take to update your code relying on the Gruntwork Infrastructure as Code library to work with
Terraform 1.x. Includes a
[version compatibility table](deployment-walkthrough/step-2-update-references-to-the-gruntwork-infrastructure-as-code-library.md#version-compatibility-table) you can use as a reference to know which Gruntwork Repo version
tag is compatible with Terraform 0.15.
tag is compatible with Terraform 1.x.

</div>
9 changes: 8 additions & 1 deletion docs/guides/stay-up-to-date/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ import CardGroup from "/src/components/CardGroup"

<CardGroup cols={1} gap="1rem" stacked equalHeightRows={false} commonCardProps={{padding: "1.25rem"}}>

<Card
title="Update to version 1.1"
href="/guides/stay-up-to-date/terraform/terraform-1.1"
/>
<Card
title="Update to version 1.X"
href="/guides/stay-up-to-date/terraform/terraform-1.x"
Expand Down Expand Up @@ -72,5 +76,8 @@ import CardGroup from "/src/components/CardGroup"


<!-- ##DOCS-SOURCER-START
{"sourcePlugin":"local-copier","hash":"22ec7fce1c9d00548395baed02c4b112"}
{
"sourcePlugin": "local-copier",
"hash": "6108197b36342bbac59c8d32d9e3dfbb"
}
##DOCS-SOURCER-END -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Core Concepts

[Terraform 1.1.0 was released on December 08,
2021](https://www.hashicorp.com/blog/terraform-1-1-improves-refactoring-and-the-cloud-cli-experience).
Some of the major new features in 1.1 include:

- Easier and Safer Refactoring with moved Statements
- An Improved CLI Experience for Terraform Cloud and Enterprise

For more info, check out the for a complete introduction, check out the
[announcement blog
post](https://www.hashicorp.com/blog/terraform-1-1-improves-refactoring-and-the-cloud-cli-experience).


<!-- ##DOCS-SOURCER-START
{
"sourcePlugin": "local-copier",
"hash": "49defa1819542396936b1f0481640f93"
}
##DOCS-SOURCER-END -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
sidebar_label: Update to Terraform 1.0
---

# Step 1: update your code to be compatible with Terraform 1.0

If you haven’t already, you need to:

1. Update your code to work with Terraform 1.0. Do NOT skip from, say, 0.11, straight to 1.1. You MUST update to
1.0.0 or above first!

1. If you’re still on Terraform 0.11 or older, see our
[Terraform 0.12 upgrade guide](../../terraform-12/index.md).

2. If you’re still on Terraform 0.12, see our
[Terraform 0.13 upgrade guide](../../terraform-13/index.md).

3. If you’re still on Terraform 0.13, see our
[Terraform 0.14 upgrade guide](../../terraform-14/index.md).

4. If you’re still on Terraform 0.14, see our
[Terraform 0.15 upgrade guide](../../terraform-15/index.md).

5. If you’re still on Terraform 0.15, see our
[Terraform 1.x upgrade guide](../../terraform-1.x/index.md).

2. Update all your Gruntwork modules to the latest versions just _before_ the TF 1.1 versions in the [compatibility
table](/guides/stay-up-to-date/terraform/terraform-1.1/deployment-walkthrough/step-2-update-references-to-the-gruntwork-infrastructure-as-code-library#version-compatibility-table). The upgrade will be much easier and less error prone if you keep the number of version jumps as small
as possible.


<!-- ##DOCS-SOURCER-START
{
"sourcePlugin": "local-copier",
"hash": "901f5f12726f3f8ebba1f5058c1e957a"
}
##DOCS-SOURCER-END -->
Loading

0 comments on commit bfb6f6c

Please sign in to comment.