--- sidebar_position: 5 sidebar_label: Upgrading from OpenTofu 1.8.x/1.9.x/1.10.x description: |- Learn how to upgrade OpenTofu from version 1.8.x/1.9.x/1.10.x to 1.11.0. --- # Upgrading from OpenTofu 1.8.x/1.9.x/1.10.x OpenTofu 1.11.x is mostly compatible with previous OpenTofu versions. This migration guide will take you through the process of upgrading OpenTofu to version 1.11.0. ## Step 0: Prepare a disaster recovery plan Although OpenTofu 1.11 is mostly compatible with previous versions, you should take the necessary precautions to prevent accidents. Make sure you have an up to date and *tested* disaster recovery plan. ## Step 1: Apply all changes with OpenTofu 1.7.x/1.8.x/1.9.x Before proceeding, make sure that you apply all changes with `tofu apply`. Running `tofu plan` should result in no planned changes. While you can switch to OpenTofu with pending changes, it is not recommended. ``` $ tofu plan ... No changes. Your infrastructure matches the configuration. OpenTofu has compared your real infrastructure against your configuration and found no differences, so no changes are needed. ``` ## Step 2: Install OpenTofu 1.11.x As a first step, please [follow the installation instructions for the OpenTofu CLI tool](intro/install/index.mdx). Please test if you can successfully execute the `tofu` command and receive the correct version: ``` $ tofu --version OpenTofu v1.11.0 on linux_amd64 ``` ## Step 3: Back up your state file Before you begin using the `tofu` binary on your Terraform code, make sure to back up your state file. If you are using a local state file, you can simply make a copy of your `terraform.tfstate` file in your project directory. If you are using a remote backend such as an S3 bucket, make sure that you follow the backup procedures for the backend and that you exercise the restore procedure at least once. ## Step 4: Initialize OpenTofu 1.11.x :::warning Should any of the following steps fail, please do not proceed and follow the [rollback instructions below](#rolling-back-and-reporting-issues) instead. If you suspect the failure may be the result of a bug in OpenTofu, [please help us by opening an issue](https://github.com/opentofu/opentofu/issues). ::: Now you are ready to migrate. Run `tofu init` in the directory where your code resides. OpenTofu will download any providers and modules referenced in your configuration from the OpenTofu registry. :::note If you are using the S3 backend - You will need to run `tofu init -reconfigure` to reinitialize the backend. ::: ## Step 5: Inspect the plan Once initialized, run `tofu plan` and ensure that there are no pending changes similar to step 1 above. If there are unexpected changes in the plan, roll back to OpenTofu 1.8.x/1.9.x/1.10.x and troubleshoot your migration. (See the Troubleshooting section below.) ``` $ tofu plan ... No changes. Your infrastructure matches the configuration. OpenTofu has compared your real infrastructure against your configuration and found no differences, so no changes are needed. ``` ## Step 6: Test out a small change Before you begin using OpenTofu for larger changes, test out `tofu apply` with a smaller, non-critical change. ## Rolling back and reporting issues If you have issues migrating to OpenTofu you can follow these steps to roll back to OpenTofu 1.8.x/1.9.x/1.10.x: 1. Create another backup of your state file. 2. Remove OpenTofu 1.11.x and verify that you are running OpenTofu 1.8.x/1.9.x/1.10.x. 3. Run `tofu init`. 4. Run `tofu plan` and verify that no unexpected changes are in the plan. 5. Test the rollback with a small, non-critical change. If you encountered a bug, [please report it on GitHub](https://github.com/opentofu/opentofu/issues). ## Troubleshooting If you encounter any issues during the migration to OpenTofu, you can join the OpenTofu Slack or ask on [GitHub Discussions](https://github.com/orgs/opentofu/discussions). ### Error: Failed to query available provider packages This error happens when a provider you specified in your configuration is not available in the OpenTofu registry. Please roll back to OpenTofu 1.8.x/1.9.x/1.10.x and make sure your code works with that version. If your code works, please [submit an issue to include the provider in the registry](https://github.com/opentofu/registry/issues/). ### Error: Module not found This error happens when a module you specified in your configuration is not available in the OpenTofu registry. Please roll back to OpenTofu 1.8.x/1.9.x/1.10.x and make sure your code works with that version. If your code works, please [submit an issue to include the module in the registry](https://github.com/opentofu/registry/issues/).