HashiCorp Terraform Provider Versioning

HashiCorp Terraform Provider Versioning

Sep 13 2017 Martin Atkins

In HashiCorp Terraform 0.10, Terraform was split into two logical components: Terraform Core and Terraform Providers. A major motivation for this change was the acknowledgement that provider development has a different scope and development speed. The various providers are constantly changing, and it's always been frustrating when a major new feature in your chosen platform is delayed in Terraform because of the need to coordinate releases with other providers and with Core.

A more mundane aspect of separate provider releases is separate provider version numbers. Previously Core and all of the providers shared a single version number for each release. Users may have noticed that, with the new separate release schedules, providers have begun their own version numbering scheme at 0.1.0, and have been incrementing from there.

Observing that Terraform providers are in many ways analogous to shared libraries in a programming language, we're adopting a version numbering scheme for providers that follows the guidelines of Semantic Versioning. In summary, this means that with a version number of the form MAJOR.MINOR.PATCH, the following meanings apply:

  • Increasing only the patch number suggests that the release includes only bug fixes, and is intended to be functionally equivalent.

  • Increasing the minor number suggests that new features have been added but that existing functionality remains broadly compatible.

  • Increasing the major number indicates that significant breaking changes have been made, and thus extra care or attention is required during an upgrade.

At the time of writing, most of the providers within the terraform-providers GitHub organization remain on 0.x.x "initial development" numbering, which (per the semantic versioning spec) represents that the above promises do not necessarily yet apply. However, as each provider development team gets ready to work within this scheme it will be indicated by a release numbered 1.0.0, after which the above conventions will be adopted for future releases.

For providers in particular, the move to 1.0.0 will not generally represent any significant change in functionality or any change in development velocity. Most of the providers are already of very high quality and have a stable development process, so this version change is merely an acknowledgement of the existing quality and stability.

Third-Party Providers

A discussion of provider versioning would not be complete without mentioning third-party providers. We know that many Terraform users maintain their own providers for a variety of additional services, and we are grateful that many of these are maintained as open source projects.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now