When it comes to Infrastructure As Code, the software versioning system known as Semantic Versioning (semver.org) works from an API perspective but falls short elsewhere.
In short a semver is broken down into three "octets" and optional, additional information tagged to the end. Here are a few examples: v1.0.1, v3.1.1, v1.15.0-4. Each of these is a valid semver.
If we take the first example - v1.0.1 - and change the first octet, 1, to 2, we're saying the following:
There has been a change to this code and that change is not compatible with how you're using
v1.0.1. The change is a breaking change. You should take care to introduce versionv2.0.0into your code or your environment.