-
-
Notifications
You must be signed in to change notification settings - Fork 582
fix(terraform_validate): Add better workaround for deal with parallelism race conditions in Terraform setups during t init: allow use of tofu binary just for t init, as OpenTofu 1.10+ have native lock mechanism
#956
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…elism race conditions in Terraform setups during `t init`: allow use of `tofu` binary just for `t init`, as OpenTofu 1.10+ have native lock mechanism
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. 📝 WalkthroughSummary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings. WalkthroughDetects TF_PLUGIN_CACHE_DIR and adds an OpenTofu (tofu) version check (>= 1.10). If present and tofu ≥1.10, switches terraform init invocations to the Changes
Sequence Diagram(s)sequenceDiagram
participant Hook as Hook script
participant Env as Environment
participant Terraform as terraform CLI
participant Tofu as tofu (OpenTofu CLI)
participant Cache as TF_PLUGIN_CACHE_DIR
Hook->>Env: check TF_PLUGIN_CACHE_DIR present?
alt plugin cache present
Hook->>Tofu: run `tofu --version`
alt tofu version >= 1.10
Tofu-->>Hook: version >= 1.10
Hook->>Tofu: set tf_init_path = "tofu"
Hook->>Tofu: run `init` (using tf_init_path)
Tofu->>Cache: initialize providers (concurrent-safe)
else version < 1.10 / unknown
Tofu-->>Hook: version < 1.10 / unreadable
Hook->>Terraform: set tf_init_path = "terraform"
Hook->>Terraform: run `init` (with retry/serial workaround)
Terraform->>Cache: initialize providers
end
else no plugin cache
Hook->>Terraform: run `init` (normal flow)
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
hooks/_common.sh (1)
535-571: Fix tofu switch: readonly reassignment error and Terraform detection logic
tf_pathis declared readonly at line 538 but reassigned at line 560. Withset -eenabled, this causes an error and script exit. Additionally, the Terraform detection condition compares the full version output line (e.g., "Terraform v1.5.0...") against the literal string "Terraform", so the condition never matches and tofu switch fails to activate.🔧 Suggested fix
- local -r tf_path=$4 + local -r tf_path=$4 + local tf_init_path="$tf_path" @@ - if [[ -z $TF_PLUGIN_CACHE_DIR || $parallelism_disabled == true ]]; then - init_output=$("$tf_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1) + if [[ -z $TF_PLUGIN_CACHE_DIR || $parallelism_disabled == true ]]; then + init_output=$("$tf_init_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1) @@ - if [[ "$($tf_path -version | head -1 | grep '^Terraform')" == "Terraform" ]] && + if "$tf_path" -version 2>/dev/null | head -1 | grep -q '^Terraform' && common::tofu_version_ge_1.10; then - tf_path=$(command -v tofu) - common::colorify "green" "Using OpenTofu binary ($tf_path) for Terraform init operations, as it supports concurrent provider initialization." + tf_init_path=$(command -v tofu) + common::colorify "green" "Using OpenTofu binary ($tf_init_path) for Terraform init operations, as it supports concurrent provider initialization." fi @@ - init_output=$("$tf_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1) + init_output=$("$tf_init_path" init -backend=false "${TF_INIT_ARGS[@]}" 2>&1)
🤖 Fix all issues with AI agents
In `@hooks/_common.sh`:
- Around line 633-647: The function common::tofu_version_ge_1.10 should first
check whether the tofu binary exists to avoid failing under set -eo pipefail;
add a guard using command -v tofu (or similar) at the start of
common::tofu_version_ge_1.10 so that if tofu is missing the function returns 1
(indicating "not >=1.10") without invoking tofu --version, then proceed with the
existing version extraction logic and return codes unchanged.
In `@README.md`:
- Around line 972-976: The ordered list in the README note has a missing space
after "2." which breaks Markdown rendering; update the second list item text to
include a space after the "2." so it reads "2. `tofu` < v1.10 or any `terraform`
version" (refer to the note mentioning "Global Provider Cache" and the "`tofu` <
v1.10" item) to restore proper ordered-list formatting.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@hooks/_common.sh`:
- Around line 562-566: tf_path is declared readonly (local -r) earlier so
reassigning it inside the tofu-detection block (the conditional that calls
common::tofu_version_ge_1.10) will fail at runtime; instead, introduce a new
mutable variable (e.g., tf_exec or terraform_path) and assign command -v tofu to
that variable when the condition is true, then use that new variable in the
common::colorify message and any later Terraform-init calls; update references
in the tofu-detection block (the if that checks "$($tf_path -version | head -1 |
grep '^Terraform')" and common::tofu_version_ge_1.10) to use the new mutable
variable rather than reassigning tf_path.
♻️ Duplicate comments (1)
hooks/_common.sh (1)
635-642: Addcommand -v tofuguard before invokingtofu --version.As noted in a previous review, calling
tofu --versionwithout first checking iftofuexists can cause issues underset -eo pipefail. While the2> /dev/nullsuppresses stderr, the pipeline exit code can still propagate failures in certain contexts.Additionally, line 640's
echooutputs to stdout. While this function returns via exit code (not stdout), diagnostic output should go to stderr for consistency.🔧 Suggested fix (incorporates previous review feedback)
function common::tofu_version_ge_1.10 { local tofu_version + command -v tofu >/dev/null 2>&1 || return 1 + # Extract version number (e.g., "tofu version v1.10.4" -> "1.10") - tofu_version=$(tofu --version 2> /dev/null | grep -oE '[0-9]+\.[0-9]+') - echo "Detected OpenTofu version: $tofu_version" + tofu_version=$(tofu --version 2> /dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+') + echo "Detected OpenTofu version: $tofu_version" >&2 # If we can't parse version, default to older command [[ ! $tofu_version ]] && return 1
🧹 Nitpick comments (1)
hooks/_common.sh (1)
561-567: Consider redirecting diagnostic output to stderr.The
echostatements on lines 561 and 567 output to stdout. For consistency with other diagnostic messages in this file (e.g.,common::colorifyoutputs to stderr on line 463), consider redirecting these to stderr or usingcommon::colorify.♻️ Suggested change
- echo "Using Terraform binary path: $tf_path" + echo "Using Terraform binary path: $tf_path" >&2 if [[ "$($tf_path -version | head -1 | grep '^Terraform')" == "Terraform" ]] && common::tofu_version_ge_1.10; then tf_path=$(command -v tofu) common::colorify "green" "Using OpenTofu binary ($tf_path) for Terraform init operations, as it supports concurrent provider initialization." fi - echo "Running 'terraform init' with plugin cache dir: $TF_PLUGIN_CACHE_DIR" + echo "Running 'terraform init' with plugin cache dir: $TF_PLUGIN_CACHE_DIR" >&2
hooks/_common.sh
Outdated
| if [[ "$($tf_path -version | head -1 | grep '^Terraform')" == "Terraform" ]] && | ||
| common::tofu_version_ge_1.10; then | ||
| tf_path=$(command -v tofu) | ||
| common::colorify "green" "Using OpenTofu binary ($tf_path) for Terraform init operations, as it supports concurrent provider initialization." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logging messages below this line and to the end of the common::terraform_init function use the 'terraform init' words which might add a bit of confusion when the tf_path is switched to tofu.
Should we handle this and update logging messages in this function to reflect real state of things when tofu is used instead of terraform? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This one was resolved without actioning. Would you mind sharing your thoughts on my question above? Thanks.
Co-authored-by: George Yermulnik (Georgii Iermulnik) <yz@yz.kiev.ua>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR fixes race conditions that occur when multiple terraform init processes write to the global provider cache (TF_PLUGIN_CACHE_DIR) concurrently. The solution leverages OpenTofu v1.10+'s native locking mechanism for the provider cache by automatically switching to tofu init when running Terraform projects if OpenTofu v1.10+ is available on the system.
Changes:
- Added logic to detect when using Terraform binary and switch to OpenTofu binary for init operations if OpenTofu >= 1.10 is available
- Implemented
common::tofu_version_ge_1.10function to check OpenTofu version - Updated documentation to clarify the parallelism workaround options and the new OpenTofu fallback behavior
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| hooks/_common.sh | Added version checking function and logic to switch from terraform to tofu binary for init operations when OpenTofu 1.10+ is available |
| README.md | Updated terraform_validate documentation to explain the new workaround option of installing OpenTofu 1.10+ |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@maxbrunet @carlosjgp @fredleger is suggested in this PR workaround will work for you? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM apart from suggestion below. Also GH Copilot suggestions above look reasonable.
Co-authored-by: George Yermulnik (Georgii Iermulnik) <yz@yz.kiev.ua> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
yermulnik
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I'm still a bit concerned about discrepancy in logging messages when switched to tofu from terraform, which I mentioned at #956 (comment), which was resolved without comment (and hence I unresolved it).
Thanks
|
Currently it does not work as expected:
FIXES
|
Dang, this is an unacceptable and a breaking change which may impact consumers' workflows (including firewall rules etc) I reckon 😞 |
The change to TF lock files needs more consideration
|
There is no way to change tofu registry back to terraform registry, without explicitly set registry in all terraform provider sources, which I can't recommend to anyone as working solution |
|
Btw, Terraform and OpenTofu are building hashicorp providers separately (and tofu versions lacks of some platforms as well) => they have different checksums diff --git a/components/terraform/campaign-shared-resources/.terraform.lock.hcl b/components/terraform/campaign-shared-resources/.terraform.lock.hcl
index 7181aa6223..1d5ca3def0 100644
--- a/components/terraform/campaign-shared-resources/.terraform.lock.hcl
+++ b/components/terraform/campaign-shared-resources/.terraform.lock.hcl
@@ -1,7 +1,7 @@
-# This file is maintained automatically by "terraform init".
+# This file is maintained automatically by "tofu init".
# Manual edits may be lost in future updates.
-provider "registry.terraform.io/cloudposse/utils" {
+provider "registry.opentofu.org/cloudposse/utils" {
version = "1.31.0"
constraints = ">= 1.7.1, < 2.0.0"
hashes = [
@@ -23,7 +23,7 @@ provider "registry.terraform.io/cloudposse/utils" {
]
}
-provider "registry.terraform.io/eddycharly/kops" {
+provider "registry.opentofu.org/eddycharly/kops" {
version = "1.23.4"
constraints = "1.23.4"
hashes = [
@@ -39,104 +39,87 @@ provider "registry.terraform.io/eddycharly/kops" {
]
}
-provider "registry.terraform.io/hashicorp/aws" {
+provider "registry.opentofu.org/hashicorp/aws" {
version = "6.28.0"
constraints = ">= 2.0.0, >= 3.64.0, >= 4.0.0, ~> 6.0"
hashes = [
- "h1:wzZdGs0FFmNqIgPyo9tKnGKJ37BGNSgwRrEXayL29+0=",
- "zh:0ba0d5eb6e0c6a933eb2befe3cdbf22b58fbc0337bf138f95bf0e8bb6e6df93e",
- "zh:23eacdd4e6db32cf0ff2ce189461bdbb62e46513978d33c5de4decc4670870ec",
- "zh:307b06a15fc00a8e6fd243abde2cbe5112e9d40371542665b91bec1018dd6e3c",
- "zh:37a02d5b45a9d050b9642c9e2e268297254192280df72f6e46641daca52e40ec",
- "zh:3da866639f07d92e734557d673092719c33ede80f4276c835bf7f231a669aa33",
- "zh:480060b0ba310d0f6b6a14d60b276698cb103c48fd2f7e2802ae47c963995ec6",
- "zh:57796453455c20db80d9168edbf125bf6180e1aae869de1546a2be58e4e405ec",
- "zh:69139cba772d4df8de87598d8d8a2b1b4b254866db046c061dccc79edb14e6b9",
- "zh:7312763259b859ff911c5452ca8bdf7d0be6231c5ea0de2df8f09d51770900ac",
- "zh:8d2d6f4015d3c155d7eb53e36f019a729aefb46ebfe13f3a637327d3a1402ecc",
- "zh:94ce589275c77308e6253f607de96919b840c2dd36c44aa798f693c9dd81af42",
- "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425",
- "zh:adaceec6a1bf4f5df1e12bd72cf52b72087c72efed078aef636f8988325b1a8b",
- "zh:d37be1ce187d94fd9df7b13a717c219964cd835c946243f096c6b230cdfd7e92",
- "zh:fe6205b5ca2ff36e68395cb8d3ae10a3728f405cdbcd46b206a515e1ebcf17a1",
+ "h1:tcau98fkhZ2RhbPHo8LdiiUk2RGpZUgT/t06sdMLids=",
+ "zh:38d58305206953783c150fb96d5c4f3ea5fe0b9e0987d927c884a6b0f2adf7a9",
+ "zh:43fd483251165f98b7a44360b41b437d309b007ef2bfff818eedcf3730e3f5cb",
+ "zh:4753decc5a718cb74b08244a02d00c150f0ddd6ebf2e1227f6a985c647c03ce9",
+ "zh:5956525650554bd3fbc4b695eb5250193f0ebf94c45862a7730457ab6a315069",
+ "zh:76d98fa1146750c01f607bae4421952ee9cd14ed3a4a59deb7136749adb9e0ae",
+ "zh:792c29e5ec91356baddb6219ac7f6f1df09c251cbe4ab6e089fc25d64270b22a",
+ "zh:856424380caa7c1536dc00515d12beac2693db1a8425da654eed5530abeb17d9",
+ "zh:e8982ec2bc692efa7236e3565e7094a09f52c5b71d8860a570a36fb31a40f27f",
+ "zh:f5e7ff825dc3f7356fb80936bfe7bb1b54a728ccf429cb753cfe590932f0403b",
]
}
-provider "registry.terraform.io/hashicorp/external" {
+provider "registry.opentofu.org/hashicorp/external" {
version = "2.3.5"
constraints = ">= 2.0.0"
hashes = [
- "h1:smKSos4zs57pJjQrNuvGBpSWth2el9SgePPbPHo0aps=",
- "zh:6e89509d056091266532fa64de8c06950010498adf9070bf6ff85bc485a82562",
- "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
- "zh:86868aec05b58dc0aa1904646a2c26b9367d69b890c9ad70c33c0d3aa7b1485a",
- "zh:a2ce38fda83a62fa5fb5a70e6ca8453b168575feb3459fa39803f6f40bd42154",
- "zh:a6c72798f4a9a36d1d1433c0372006cc9b904e8cfd60a2ae03ac5b7d2abd2398",
- "zh:a8a3141d2fc71c86bf7f3c13b0b3be8a1b0f0144a47572a15af4dfafc051e28a",
- "zh:aa20a1242eb97445ad26ebcfb9babf2cd675bdb81cac5f989268ebefa4ef278c",
- "zh:b58a22445fb8804e933dcf835ab06c29a0f33148dce61316814783ee7f4e4332",
- "zh:cb5626a661ee761e0576defb2a2d75230a3244799d380864f3089c66e99d0dcc",
- "zh:d1acb00d20445f682c4e705c965e5220530209c95609194c2dc39324f3d4fcce",
- "zh:d91a254ba77b69a29d8eae8ed0e9367cbf0ea6ac1a85b58e190f8cb096a40871",
- "zh:f6592327673c9f85cdb6f20336faef240abae7621b834f189c4a62276ea5db41",
+ "h1:jcVmeuuz74tdRt2kj0MpUG9AORdlAlRRQ3k61y0r5Vc=",
+ "zh:1fb9aca1f068374a09d438dba84c9d8ba5915d24934a72b6ef66ef6818329151",
+ "zh:3eab30e4fcc76369deffb185b4d225999fc82d2eaaa6484d3b3164a4ed0f7c49",
+ "zh:4f8b7a4832a68080f0bf4f155b56a691832d8a91ce8096dac0f13a90081abc50",
+ "zh:5ff1935612db62e48e4fe6cfb83dfac401b506a5b7b38342217616fbcab70ce0",
+ "zh:993192234d327ec86726041eb6d1efb001e41f32e4518ad8b9b162130b65ee9a",
+ "zh:ce445e68282a2c4b2d1f994a2730406df4ea47914c0932fb4a7eb040a7ec7061",
+ "zh:e305e17216840c54194141fb852839c2cedd6b41abd70cf8d606d6e88ed40e64",
+ "zh:edba65fb241d663c09aa2cbf75026c840e963d5195f27000f216829e49811437",
+ "zh:f306cc6f6ec9beaf75bdcefaadb7b77af320b1f9b56d8f50df5ebd2189a93148",
+ "zh:fb2ff9e1f86796fda87e1f122d40568912a904da51d477461b850d81a0105f3d",
]
}
-provider "registry.terraform.io/hashicorp/kubernetes" {
+provider "registry.opentofu.org/hashicorp/kubernetes" {
version = "2.38.0"
constraints = ">= 2.21.1, < 3.0.0"
hashes = [
- "h1:5CkveFo5ynsLdzKk+Kv+r7+U9rMrNjfZPT3a0N/fhgE=",
- "zh:0af928d776eb269b192dc0ea0f8a3f0f5ec117224cd644bdacdc682300f84ba0",
- "zh:1be998e67206f7cfc4ffe77c01a09ac91ce725de0abaec9030b22c0a832af44f",
- "zh:326803fe5946023687d603f6f1bab24de7af3d426b01d20e51d4e6fbe4e7ec1b",
- "zh:4a99ec8d91193af961de1abb1f824be73df07489301d62e6141a656b3ebfff12",
- "zh:5136e51765d6a0b9e4dbcc3b38821e9736bd2136cf15e9aac11668f22db117d2",
- "zh:63fab47349852d7802fb032e4f2b6a101ee1ce34b62557a9ad0f0f0f5b6ecfdc",
- "zh:924fb0257e2d03e03e2bfe9c7b99aa73c195b1f19412ca09960001bee3c50d15",
- "zh:b63a0be5e233f8f6727c56bed3b61eb9456ca7a8bb29539fba0837f1badf1396",
- "zh:d39861aa21077f1bc899bc53e7233262e530ba8a3a2d737449b100daeb303e4d",
- "zh:de0805e10ebe4c83ce3b728a67f6b0f9d18be32b25146aa89116634df5145ad4",
- "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
- "zh:faf23e45f0090eef8ba28a8aac7ec5d4fdf11a36c40a8d286304567d71c1e7db",
+ "h1:nY7J9jFXcsRINog0KYagiWZw1GVYF9D2JmtIB7Wnrao=",
+ "zh:1096b41c4e5b2ee6c1980916fb9a8579bc1892071396f7a9432be058aabf3cbc",
+ "zh:2959fde9ae3d1deb5e317df0d7b02ea4977951ee6b9c4beb083c148ca8f3681c",
+ "zh:5082f98fcb3389c73339365f7df39fc6912bf2bd1a46d5f97778f441a67fd337",
+ "zh:620fd5d0fbc2d7a24ac6b420a4922e6093020358162a62fa8cbd37b2bac1d22e",
+ "zh:7f47c2de179bba35d759147c53082cad6c3449d19b0ec0c5a4ca8db5b06393e1",
+ "zh:89c3aa2a87e29febf100fd21cead34f9a4c0e6e7ae5f383b5cef815c677eb52a",
+ "zh:96eecc9f94938a0bc35b8a63d2c4a5f972395e44206620db06760b730d0471fc",
+ "zh:e15567c1095f898af173c281b66bffdc4f3068afdd9f84bb5b5b5521d9f29584",
+ "zh:ecc6b912629734a9a41a7cf1c4c73fb13b4b510afc9e7b2e0011d290bcd6d77f",
]
}
-provider "registry.terraform.io/hashicorp/local" {
+provider "registry.opentofu.org/hashicorp/local" {
version = "2.6.1"
constraints = ">= 1.3.0"
hashes = [
- "h1:LMoX85QLTgCCqRuy2aXoz47P7gZ4WRPSA00fUPC/Rho=",
- "zh:10050d08f416de42a857e4b6f76809aae63ea4ec6f5c852a126a915dede814b4",
- "zh:2df2a3ebe9830d4759c59b51702e209fe053f47453cb4688f43c063bac8746b7",
- "zh:2e759568bcc38c86ca0e43701d34cf29945736fdc8e429c5b287ddc2703c7b18",
- "zh:6a62a34e48500ab4aea778e355e162ebde03260b7a9eb9edc7e534c84fbca4c6",
- "zh:74373728ba32a1d5450a3a88ac45624579e32755b086cd4e51e88d9aca240ef6",
- "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
- "zh:8dddae588971a996f622e7589cd8b9da7834c744ac12bfb59c97fa77ded95255",
- "zh:946f82f66353bb97aefa8d95c4ca86db227f9b7c50b82415289ac47e4e74d08d",
- "zh:e9a5c09e6f35e510acf15b666fd0b34a30164cecdcd81ce7cda0f4b2dade8d91",
- "zh:eafe5b873ef42b32feb2f969c38ff8652507e695620cbaf03b9db714bee52249",
- "zh:ec146289fa27650c9d433bb5c7847379180c0b7a323b1b94e6e7ad5d2a7dbe71",
- "zh:fc882c35ce05631d76c0973b35adde26980778fc81d9da81a2fade2b9d73423b",
+ "h1:QH/Ay/SWVoOLgvFacjcvQcrw2WfEktZHxCcIQG0A9/w=",
+ "zh:0416d7bf0b459a995cf48f202af7b7ffa252def7d23386fc05b34f67347a22ba",
+ "zh:24743d559026b59610eb3d9fa9ec7fbeb06399c0ef01272e46fe5c313eb5c6ff",
+ "zh:2561cdfbc90090fee7f844a5cb5cbed8472ce264f5d505acb18326650a5b563f",
+ "zh:3ebc3f2dc7a099bd83e5c4c2b6918e5b56ec746766c58a31a3f5d189cb837db5",
+ "zh:490e0ce925fc3848027e10017f960e9e19e7f9c3b620524f67ce54217d1c6390",
+ "zh:bf08934295877f831f2e5f17a0b3ebb51dd608b2509077f7b22afa7722e28950",
+ "zh:c298c0f72e1485588a73768cb90163863b6c3d4c71982908c219e9b87904f376",
+ "zh:cedbaed4967818903ef378675211ed541c8243c4597304161363e828c7dc3d36",
+ "zh:edda76726d7874128cf1e182640c332c5a5e6a66a053c0aa97e2a0e4267b3b92",
]
}
-provider "registry.terraform.io/hashicorp/random" {
+provider "registry.opentofu.org/hashicorp/random" {
version = "3.8.0"
hashes = [
- "h1:SqwYP3u2T4rNxWvcrUc693VLY1V7DJPusZR9nn5NqSo=",
- "zh:0e71891d8f25564e8d0b61654ed2ca52101862b9a2a07d736395193ae07b134b",
- "zh:1c56852d094161997df5fd8a6cbca7c6c979b3f8c3c00fbcc374a59305d117b1",
- "zh:20698fb8a2eaa7e23c4f8e3d22250368862f578cf618be0281d5b61496cbef13",
- "zh:3afbdd5e955f6d0105fed4f6b7fef7ba165cd780569483e688002108cf06586c",
- "zh:4ce22b96e625dc203ea653d53551d46156dd63ad79e45bcbe0224b2e6357f243",
- "zh:4ff84b568ad468d140f8f6201a372c6c4bea17d64527b72e341ae8fafea65b8e",
- "zh:54b071cb509203c43e420cc589523709bbc6e65d80c1cd9384f5bd88fd1ff1a2",
- "zh:63fc5f9f341a573cd5c8bcfc994a58fa52a5ad88d2cbbd80f5a9f143c5006e75",
- "zh:73cb8b39887589914686d14a99b4de6e85e48603f7235d87da5594e3fbb7d8a7",
- "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
- "zh:7ee20f28aa6a25539a5b9fc249e751dec5a5b130dcd73c5d05efdf4d5e320454",
- "zh:994a83fddab1d44a8f546920ed34e45ea6caefe4f08735bada6c28dc9010e5e4",
+ "h1:ey4eBIHiuAC5xsblxtXghXE3nWwUvGqTT6KAsggiAwo=",
+ "zh:2d5e0bbfac7f15595739fe54a9ab8b8eea92fd6d879706139dad7ecaa5c01c19",
+ "zh:349e637066625d97aaa84db1b1418c86d6457cf9c5a62f6dcc3f55cbd535112c",
+ "zh:5f4456d53f5256ccfdb87dd35d3bf34578d01bd9b71cffaf507f0692805eac8a",
+ "zh:6c1ecfacc5f7079a068d7f8eb8924485d4ec8183f36e6318a6e748d35921ddac",
+ "zh:6d86641edeb8c394f121f7b0a691d72f89cf9b938b987a01fc32aad396a50555",
+ "zh:76947bd7bc7033b33980538da149c94e386f9b0abb2ce63733f25a57517e4742",
+ "zh:79c07f4c8b3a63d9f89e25e4348b462c57e179bca66ba533710851c485e282db",
+ "zh:ac1c2b941d994728a3a93aba093fd2202f9311d099ff85f66678897c792161ba",
+ "zh:cbb2aa867fd828fcb4125239e00862b9a3bc2f280e945c760224276b476f4c49",
]
} |


Put an
xinto the box if that apply:Description of your changes
Fixes #640
How can we test changes
Install 2 versions of OpenTofu - older and newer than 1.10
Test both scenarios + scenario w/o OpenTofu binary, with next configuration: