Skip to content

Commit

Permalink
1.8 release (#316)
Browse files Browse the repository at this point in the history
* 1.8 release

Signed-off-by: Janos <[email protected]>

* Wording changes + 1.7 blog post link updates

Signed-off-by: Janos <[email protected]>

* Last fixes

Signed-off-by: Janos <[email protected]>

* Capitalization fix

Signed-off-by: Janos <[email protected]>

---------

Signed-off-by: Janos <[email protected]>
  • Loading branch information
Janos authored Jul 29, 2024
1 parent c5ebd2c commit a03e4dc
Show file tree
Hide file tree
Showing 14 changed files with 12,351 additions and 7 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@
path = opentofu-repo/v1.7
url = https://github.com/opentofu/opentofu
branch = v1.7
[submodule "opentofu-repo/v1.8"]
path = opentofu-repo/v1.8
url = https://github.com/opentofu/opentofu
branch = v1.8
6 changes: 3 additions & 3 deletions blog/2024-04-30-opentofu-1-7-0.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ image: /img/blog/opentofu-1-7-0.png

In the last few months [since our first stable release](/blog/opentofu-is-going-ga/) the OpenTofu community and the core team have worked hand in hand to bring functionality to OpenTofu that has been requested for years. We are proud to announce the immediate availability of [OpenTofu 1.7.0](https://github.com/opentofu/opentofu/releases/tag/v1.7.0), bringing you the following highlights:

- [**End-to-end state encryption**](/docs/intro/whats-new/#state-encryption) protects your state file from prying eyes, no matter what storage backend you use. You can provide your encryption passphrase securely using environment variables, or use a key management system such as AWS KMS, GCP KMS, or OpenBao. *This feature has been developed in collaboration with Stephan Bartels (Interhyp) and Alex Scheel from the OpenTofu community, whom we would like to thank for their work on this feature.*
- [**Dynamic provider-defined functions**](/docs/intro/whats-new/#provider-defined-functions) let a provider not only provide resources, but also native functions you can use in your OpenTofu code. What's more, we added an OpenTofu-only feature to let providers dynamically define custom functions based on your configuration. This enhancement allows you to fully integrate other programming languages as [shown in our live stream](https://www.youtube.com/watch?v=6OXBv0MYalY). You can try out this functionality with our experimental [Lua](https://github.com/opentofu/terraform-provider-lua) and [Go](https://github.com/opentofu/terraform-provider-go) providers.
- [**End-to-end state encryption**](/docs/v1.7/intro/whats-new/#state-encryption) protects your state file from prying eyes, no matter what storage backend you use. You can provide your encryption passphrase securely using environment variables, or use a key management system such as AWS KMS, GCP KMS, or OpenBao. *This feature has been developed in collaboration with Stephan Bartels (Interhyp) and Alex Scheel from the OpenTofu community, whom we would like to thank for their work on this feature.*
- [**Dynamic provider-defined functions**](/docs/v1.7/intro/whats-new/#provider-defined-functions) let a provider not only provide resources, but also native functions you can use in your OpenTofu code. What's more, we added an OpenTofu-only feature to let providers dynamically define custom functions based on your configuration. This enhancement allows you to fully integrate other programming languages as [shown in our live stream](https://www.youtube.com/watch?v=6OXBv0MYalY). You can try out this functionality with our experimental [Lua](https://github.com/opentofu/terraform-provider-lua) and [Go](https://github.com/opentofu/terraform-provider-go) providers.
- [**The removed block**](/docs/intro/whats-new/#removed-block) lets you mark OpenTofu-created resources for removal from the state file, but still keep the infrastructure you created.
- [**Loopable import blocks**](/docs/intro/whats-new/#loopable-import-blocks) let you bulk-import resources declaratively in your OpenTofu code, helping with large-scale migrations.

As with the previous version, OpenTofu remains a drop-in replacement for its predecessor Terraform™ 1.5 and has easy migration paths from later versions. Check out the overhauled [**migration guides**](/docs/intro/migration/) for detailed migration instructions. You can find the full list of changes and comprehensive examples [in the documentation](/docs/intro/whats-new/).
As with the previous version, OpenTofu remains a drop-in replacement for its predecessor Terraform™ 1.5 and has easy migration paths from later versions. Check out the overhauled [**migration guides**](/docs/v1.7/intro/migration/) for detailed migration instructions. You can find the full list of changes and comprehensive examples [in the documentation](/docs/v1.7/intro/whats-new/).

## The OpenTofu community grew significantly

Expand Down
62 changes: 62 additions & 0 deletions blog/2024-07-29-opentofu-1-8-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: OpenTofu 1.8.0 is out with Early Evaluation, Provider Mocking, and a Coder-Friendly Future
slug: opentofu-1-8-0
description: OpenTofu 1.8.0 is now available with early variable/locals evaluation, provider mocking for tests, and a future that makes every-day Tofu code a lot simpler.
image: /img/blog/opentofu-1.8.0.png
---

Since the [1.7 release](/blog/opentofu-1.7.0), the OpenTofu community and core team have been hard at work on much-requested features, making `.tf` code easier to write, reducing unnecessary boilerplate, improving performance, and more. We are happy to announce the [immediate availability of OpenTofu 1.8](https://github.com/opentofu/opentofu/releases/tag/v1.8.0) with the following main features:

- [You can now use variables and locals places](/docs/intro/whats-new/#early-variablelocals-evaluation) that were not previously available, such as module sources, backend configuration and state encryption. Being able to assign variables more dynamically will eliminate code duplication and boilerplate code, making projects easier to maintain. However, we are not stopping there: future releases will see [dynamic provider configuration assignments](https://github.com/opentofu/opentofu/issues/300) and more.
- Since Terraform doesn't support these new language features, [OpenTofu now supports the `.tofu` file extension](/docs/intro/whats-new/#override-files-for-opentofu-keeping-compatibility). When a file with the `.tofu` extension is present, OpenTofu will ignore the identically named `.tf` file. Using this new file extension, module authors can use the new features of OpenTofu and still keep older code around for compatibility.
- You can now use [provider mocking](/docs/intro/whats-new/#provider-mocking-in-tofu-test) as well as [resource overrides]( /docs/intro/whats-new/#resource-overrides-in-tofu-test) with `tofu test`. This allows for more flexible testing similar to traditional software testing methods.

You can find the full list of improvements and changes on the [What's new in OpenTofu 1.8?](/docs/intro/whats-new/) page.

## Growth continues: ~30% increase in registry traffic

While we don't believe in tracking our users and OpenTofu does not have phone-home telemetry, we can observe a trajectory based on registry usage. In our [last release post](/blog/opentofu-1.7.0) 3 months ago we recorded a peak of roughly 1.4 million daily requests to the registry. We are happy to report that this number has increased by roughly 30% to almost 1.8 million peak daily requests.

![A graph showing the OpenTofu registry requests per day.](/img/blog/opentofu-registry-july-2024.svg)

As before, the OpenTofu community is very active in reporting and voting on issues, fixing bugs, and helping out with testing. The number of GitHub stars grew by ~10% to almost 22.000, the [top-voted issues](https://github.com/opentofu/opentofu/issues/1496) received hundreds of votes and quite a few comments in the discussions. This release has also seen significant contributions from outside the core team, ranging from small fixes to large performance overhaul PRs. In total, over 100 issues and over 150 pull requests were opened since the last release. 26 people contributed to this release on the main repository alone, with several significant contributions added to other repositories as well.

Finally, we'd like to direct your attention to [Awesome OpenTofu](https://awesome-opentofu.com/), a community page containing a host of tools, platforms, registry implementations and learning material for OpenTofu.

## Better documentation for the future: the new RFC process

As the community kept working hand-in-hand with the core team it became clear that our previous RFC process based on GitHub Issues wasn't detailed enough. The linear nature of issue comments didn't encourage discussing specific parts of an RFC and the RFCs themselves did not contain enough context for someone in a few months or years to fully understand why the change was necessary.

Our [new pull request-based RFC process](https://github.com/opentofu/opentofu/tree/main/rfc) fills this gap by using PR reviews to discuss parts of a document and the document itself encourages creating a historical record. We have trialled this process during the development of the [early (static) evaluation feature](https://github.com/opentofu/opentofu/blob/main/rfc/20240513-static-evaluation.md) and also the upcoming [dynamic provider assignment](https://github.com/opentofu/opentofu/blob/main/rfc/20240513-static-evaluation-providers.md) functionality. We hope that these documents will provide a better view into the new features coming to OpenTofu and also help create a historical record on why engineering decision were made the way they were.

## Coming soon: the OpenTofu Registry UI

In parallel to this release, we have been hard at work on a web-based user interface for the OpenTofu Registry. This user interface will allow you to browse and search for providers, resources and modules and read their documentation in a convenient format. We are aiming to release this user interface in the next few weeks.

![A preview screenshot of the OpenTofu Registry UI](/img/blog/opentofu-registry-preview.png)

## Fulfilling promises: our first Go libraries

OpenTofu was founded on the principle of openness and modularity. While it is not always easy to modularize a codebase with a long history, we have released our first Go libraries for interoperability.

[TofuDL](https://github.com/opentofu/tofudl) encodes the process of fetching the latest version of OpenTofu, verifying the signature and extracting the binary for local use into an easy-to-use Go library. Tool authors can use this library to cut down on the complexity of downloading the Tofu binary when needed. Furthermore, this library contains a full release mirroring tool, allowing you to build a release server with OpenTofu releases for air-gapped infrastructure that TofuDL-based tools can use to obtain the mirrored binaries.

The currently experimental [libregistry](https://github.com/opentofu/libregistry) provides structured access to the data stored in the OpenTofu registry using the metadata API. In the future, we will transition the processes currently written for GitHub Actions into this library, allowing you to execute all registry processes independently of GitHub. You can use this library as a basis for writing your own registry, although the batteries are definitely not included.

Please give these libraries a go (pun totally intended) and let us know what functionality you would like to see in them.

## The future: more dynamic functionality, even more community-focussed development

Ever since we created our [top-ranking issues](https://github.com/opentofu/opentofu/issues/1496) list, new votes from the community started pouring in, giving us a strong signal on where you want us to take OpenTofu. By a large margin, the top-requested issue was one we partly solved in this release by introducing early evaluation for variables and locals. However, this is only the first step. As you helped us test the early alpha and beta of this release, one of the most commonly asked questions was: *“When can I use early evaluation to dynamically configure providers?”*

The top-voted enhancement reflects a similar sentiment. In 1.9 and beyond, we aim to bring you dynamic provider assignments and more early-evaluation features, which let you cut down on the unnecessary code repetition even further. If you are interested in this topic, give the [corresponding RFC a read](https://github.com/opentofu/opentofu/blob/main/rfc/20240513-static-evaluation-providers.md).

## An ask for help: GPG keys for providers

Finally, we have a favor to ask. The OpenTofu registry currently contains GPG signing keys only for a small number of providers as these keys are not publicly available on GitHub. If you are a provider author, [please submit your signing key here](https://github.com/opentofu/registry/issues/new/choose). It takes only a few minutes and does not require you to sign any legal documents or grant us access to your GitHub organization. If you are an OpenTofu user and you see that your providers are not signed, please let your provider author know that they can submit their keys and help secure the OpenTofu ecosystem.

You can identify a missing signing key by running `tofu init` and keeping an eye out for the following message:

> Signature validation was skipped due to the registry not containing GPG keys for this provider
Thank you for your help!
15 changes: 12 additions & 3 deletions docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ const config: Config = {
},
docs: {
includeCurrentVersion: false,
lastVersion: 'v1.7',
lastVersion: 'v1.8',
docVersionRootComponent: "@theme/DocVersionRoot",
versions: {
"v1.6": {
Expand All @@ -112,6 +112,11 @@ const config: Config = {
},
"v1.7": {
label: "1.7.x",
path: "v1.7",
banner: "none",
},
"v1.8": {
label: "1.8.x",
path: "",
},
"main": {
Expand Down Expand Up @@ -206,7 +211,7 @@ const config: Config = {
announcementBar: {
id: "opentofu-ga",
content:
'<a target="_blank" rel="noopener noreferrer" href="/blog/opentofu-1-7-0/">OpenTofu 1.7.0 is now available</a> with full state encryption, dynamic provider-defined functions, and much more. <a href="/blog/opentofu-1-7-0/">Read the blog post &raquo;</a>',
'<a target="_blank" rel="noopener noreferrer" href="/blog/opentofu-1-8-0/">OpenTofu 1.8.0 is out</a> with early variables/locals evaluation, .tofu file support and provider mocking. <a href="/blog/opentofu-1-8-0/">Read the blog post &raquo;</a>',
backgroundColor: "#ffda18",
textColor: "#1b1d20",
isCloseable: false,
Expand Down Expand Up @@ -275,9 +280,13 @@ const config: Config = {
position: "left",
items: [
{
label: "v1.7.x (current)",
label: "v1.8.x (current)",
href: "/docs/"
},
{
label: "v1.7.x",
href: "/docs/v1.7/"
},
{
label: "v1.6.x",
href: "/docs/v1.6/"
Expand Down
1 change: 1 addition & 0 deletions opentofu-repo/v1.8
Submodule v1.8 added at b1834a
Binary file added static/img/blog/opentofu-1.8.0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit a03e4dc

Please sign in to comment.