liveBook · Manning

Breaking change

As explained in Terraform in Depth: Infrastructure as Code with Terraform and OpenTofu

A breaking change is a software change that makes previously valid code, configuration, or interfaces require modification to function correctly.

A breaking change makes previously valid code, configuration, or interfaces require modification. In infrastructure modules, it can change variable names, required provider information, or behavior introduced by a provider upgrade. section 9.6.1

Common reasons to accept a breaking change include:

  • Fixing insecure settings by changing behavior or default values. section 9.6.1
  • Renaming variables to improve clarity or consistency. section 9.6.1
  • Adapting a module to a provider release that removes deprecated features or requires additional information. section 9.6.1
  • Adding functionality that cannot work without changing the existing interface. section 9.6.1

Renaming a module variable

If a module renames a variable, existing users must update their module configuration. Record the change in UPGRADE.md or CHANGELOG.md, group it with related major-version work when practical, and tag a new release after the changes are complete. section 9.6.1 section 9.6.3

Figure 9.2 Major release Git branching

Use the major-release branching diagram to relate breaking changes to parallel development, review, and merging into the main branch. section 9.6.3

How Terraform in Depth: Infrastructure as Code with Terraform and OpenTofu covers it

How deep it goes
Explains causes, batching, provider cascades, tests, and upgrade notes, but gives no detailed migration procedure beyond documenting interface changes.
Examples
Uses insecure defaults, renamed variables, provider requirements, removed deprecated features, major-release branches, and upgrade notes as examples.
What it assumes
Assumes an existing module interface, provider dependency, or test suite whose compatibility can be affected by change.
What you can do after
Apply it by grouping compatible breaking changes, documenting migration instructions, branching major-release work, and using tests to detect regressions.
How it connects
Connects breaking changes with backward compatibility, semantic versioning, provider releases, module interfaces, automated testing, and major releases.

Also explained in

Compare how 5 books explain breaking change →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Terraform in Depth: Infrastructure as Code with Terraform and OpenTofu. The section links point to the parts of the book it draws on.