Upgrade to TF version 0.13.6
Background
Cumulus pins its support to a specific version of Terraform see: deployment documentation. The reason for only supporting one specific Terraform version at a time is to avoid deployment errors than can be caused by deploying to the same target with different Terraform versions.
Cumulus is upgrading its supported version of Terraform from 0.12.12 to 0.13.6. This document contains instructions on how to perform the upgrade for your deployments.
Prerequisites
- Follow the Terraform guidance for what to do before upgrading, notably ensuring that you have no pending changes to your Cumulus deployments before proceeding.
- You should do a
terraform plan
to see if you have any pending changes for your deployment (for both thedata-persistence-tf
andcumulus-tf
modules), and if so, run aterraform apply
before doing the upgrade to Terraform 0.13.6
- You should do a
- Review the Terraform v0.13 release notes to prepare for any breaking changes that may affect your custom deployment code. Cumulus' deployment code has already been updated for compatibility with version 0.13.
- Install Terraform version 0.13.6. We recommend using Terraform Version Manager tfenv to manage your installed versons of Terraform, but this is not required.
Upgrade your deployment code
Terraform 0.13 does not support some of the syntax from previous Terraform versions, so you need to upgrade your deployment code for compatibility.
Terraform provides a 0.13upgrade
command as part of version 0.13 to handle automatically upgrading your code. Make sure to check out the documentation on batch usage of 0.13upgrade
, which will allow you to upgrade all of your Terraform code with one command.
Run the 0.13upgrade
command until you have no more necessary updates to your deployment code.
Upgrade your deployment
Ensure that you are running Terraform 0.13.6 by running
terraform --version
. If you are usingtfenv
, you can switch versions by runningtfenv use 0.13.6
.For the
data-persistence-tf
andcumulus-tf
directories, take the following steps:Run
terraform init --reconfigure
. The--reconfigure
flag is required, otherwise you might see an error like:Error: Failed to decode current backend config
The backend configuration created by the most recent run of "terraform init"
could not be decoded: unsupported attribute "lock_table". The configuration
may have been initialized by an earlier version that used an incompatible
configuration structure. Run "terraform init -reconfigure" to force
re-initialization of the backend.Run
terraform apply
to perform a deployment.cautionEven if Terraform says that no resource changes are pending, running the
apply
using Terraform version 0.13.6 will modify your backend state from version 0.12.12 to version 0.13.6 without requiring approval. Updating the backend state is a necessary part of the version 0.13.6 upgrade, but it is not completely transparent.