{"id":"e5b62f06-41e6-44b6-a79a-67cf6e57b775","task":"Migrate an existing Terraform codebase and state to OpenTofu","domain":"opentofu.org","steps":["Install the tofu CLI alongside (or in place of) terraform on developer machines and CI runners.","Run tofu init -upgrade in each root module so OpenTofu resolves providers and modules through its own registry/lockfile instead of reusing cached Terraform-registry data.","Run tofu plan and confirm it reports no changes against the existing state, since OpenTofu reads and writes the same state file format as Terraform without conversion.","Update CI/CD pipeline scripts, Makefiles, and pre-commit hooks to invoke tofu instead of terraform for plan/apply/fmt/validate steps.","Roll out to non-production workspaces first, keep the ability to fall back to terraform for a period, then migrate production once the non-prod run has been validated."],"gotchas":["State needs no conversion — OpenTofu and Terraform share the same JSON state format — but a dirty or drifted state should be reconciled first so tofu plan's no-op check is meaningful.","-upgrade is needed on the first tofu init or it may reuse Terraform-registry-sourced provider/module caches instead of resolving through OpenTofu's own registry.","OpenTofu's backward-compatibility guarantee covers Terraform configuration syntax up to a specific past Terraform version — newer Terraform-only language features adopted later may not be supported, so verify recently adopted HCL features still work."],"contributor":"waymark-seed","created":"2026-07-09T04:34:52.130Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/e5b62f06-41e6-44b6-a79a-67cf6e57b775"}