Skip to content

feat(terraform)!: upgrade required_version floor from 1.9.8 to 1.12.0#487

Merged
katriendg merged 9 commits into
mainfrom
feat/484-tf-version
May 12, 2026
Merged

feat(terraform)!: upgrade required_version floor from 1.9.8 to 1.12.0#487
katriendg merged 9 commits into
mainfrom
feat/484-tf-version

Conversation

@katriendg
Copy link
Copy Markdown
Collaborator

Description

This PR bumps the project-wide Terraform required_version constraint from ">= 1.9.8, < 2.0" to ">= 1.12.0, < 2.0" across all components, blueprints, and deployment modules. Six files in the 030-data and 031-fabric families previously used the non-standard "< 2.0.0" suffix; these were normalized to the canonical "< 2.0" in the same pass. CI runners for GitHub Actions and Azure DevOps were pinned to Terraform 1.12.2. All manually-authored documentation and terraform-docs-generated READMEs were updated to reflect the new floor.

Terraform versions.tf

Updated the required_version constraint in all versions.tf files under src/, blueprints/, deploy/azdo/, and ci/terraform/ paths:

  • Floor raised from >= 1.9.8 to >= 1.12.0 across all 130+ versions.tf files
  • Normalized 6 files in the 030-data and 031-fabric/032-fabric-rti component families from < 2.0.0 to the canonical < 2.0 upper bound
  • Extended update to tests/setup/main.tf files in 045-notification, 050-networking, 051-vm-host, 073-vm-host, and 100-cncf-cluster — these test harness root modules carry their own required_version constraint

CI/CD pins

Pinned CI runners to Terraform 1.12.2:

  • .github/workflows/pr-validation.yml: terraform-version: '1.9.8''1.12.2'
  • .azdo/templates/terraform-lint-template.yml: TERRAFORM_VERSION="1.9.8""1.12.2"

Documentation updates

Updated manually-authored prerequisite and developer-guide content:

  • blueprints/azure-local/README.md and blueprints/fabric-rti/README.md: prose prerequisite blocks updated from 1.9.8 to 1.12.0
  • docs/contributing/development-environment.md: tightened the weak >= 1.0 prerequisite to >= 1.12.0 (required an inline fix — the bold-wrapped **Terraform** token was missed by the initial sed pass)
  • docs/getting-started/feature-developer.md: illustrative required_version snippet updated from ">= 1.0" to ">= 1.12.0, < 2.0"
  • Three scenario prerequisite files under docs/project-planning/scenarios/ (operational-performance-monitoring, predictive-maintenance, yield-process-optimization): Version ≥1.9.8Version ≥1.12.0
  • src/500-application/505-akri-rest-http-connector/README.md and src/500-application/510-onvif-connector/README.md: manually-authored prerequisite tables updated
  • copilot/terraform/terraform.md: illustrative versions.tf snippet updated so AI assistant suggestions reflect the current floor

terraform-docs regeneration

Regenerated all auto-generated README.md files to reflect the updated version constraint:

  • npm run tf-docs regenerated **/terraform/README.md and **/terraform/modules/*/README.md files across src/ and blueprints/
  • Manual terraform-docs invocations extended coverage to ci/terraform/ sub-paths and deploy/azdo/modules/ (excluded from the npm script defaults)

Related Issue

Closes #484

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Blueprint modification or addition
  • Component modification or addition
  • Documentation update
  • CI/CD pipeline change
  • Other (please describe):

Implementation Details

Version constraints were updated in two sed passes — one for the standard ">= 1.9.8, < 2.0" pattern (157 files) and one for the non-standard ">= 1.9.8, < 2.0.0" pattern in the 6 fabric-related files. CI pin replacements used a targeted sed on the three workflow files. Documentation updates used a combination of sed on scenario prerequisites and direct file edits for the bold-wrapped token in development-environment.md that the initial sed missed.

The breaking change is the required_version floor: any operator running terraform init, terraform plan, or terraform apply must have Terraform CLI >= 1.12.0 installed.

Testing Performed

  • Terraform plan/apply
  • Blueprint deployment test
  • Unit tests
  • Integration tests
  • Bug fix includes regression test (see Test Policy)
  • Manual validation
  • Other:

npm run tf-validate-all passed across all components and blueprints. npm run tflint-fix-all ran cleanly with no lint issues. Post-implementation grep confirmed zero residual 1.9.8 references outside .copilot-tracking/ and zero < 2.0.0" occurrences in any *.tf file.

Validation Steps

  1. Pull the branch and verify the Terraform CLI version with terraform version — must be >= 1.12.0.

  2. Run npm run tf-validate-all — all components and blueprints should pass.

  3. Run npm run tflint-fix-all — no lint issues.

  4. Confirm no stale references remain:

    grep -rn "1\.9\.8" --include="*.tf" --include="*.yml" --include="*.md" . \
      | grep -v ".copilot-tracking/" | grep -v "node_modules/"

    Expected: zero results.

  5. Confirm upper-bound normalization:

    grep -rn '< 2\.0\.0"' --include="*.tf" .

    Expected: zero results.

Checklist

  • I have updated the documentation accordingly
  • I have added tests to cover my changes
  • All new and existing tests passed
  • I have run terraform fmt on all Terraform code
  • I have run terraform validate on all Terraform code
  • I have run az bicep format on all Bicep code
  • I have run az bicep build to validate all Bicep code
  • I have checked for any sensitive data/tokens that should not be committed
  • Lint checks pass (run applicable linters for changed file types)

Security Review

  • No credentials, secrets, or tokens are hardcoded or logged
  • RBAC and identity changes follow least-privilege principles
  • No new network exposure or public endpoints introduced without justification
  • Dependency additions or updates have been reviewed for known vulnerabilities
  • Container image changes use pinned digests or SHA references

No security-sensitive paths (SECURITY.md, src/000-cloud/010-security-identity/, deploy/) were modified with functional changes — only required_version string replacements and regenerated documentation.

Additional Notes

This is a breaking change for any operator running Terraform commands locally. Operators must upgrade their local Terraform CLI to >= 1.12.0 before running terraform init, terraform plan, or terraform apply against any component or blueprint in this repository.

Three deviations from the implementation plan are all intentional and benign:

  • tests/setup/main.tf files updated beyond original plan scope — required for correctness
  • .azdo/templates/terraform-lint-template.yml updated in addition to the originally enumerated AzDO files
  • terraform-docs regeneration extended to ci/terraform/ and deploy/azdo/ paths not covered by the default npm run tf-docs script

Screenshots (if applicable)

N/A — version constraint string replacements only; no visual output changes.

katriendg added 2 commits May 7, 2026 11:16
Bump the project-wide Terraform required_version constraint from
">= 1.9.8, < 2.0" to ">= 1.12.0, < 2.0" across all versions.tf files
and test setup files. Normalize 6 previously inconsistent files using
"< 2.0.0" to the canonical "< 2.0" suffix. Pin CI runners (GitHub
Actions and Azure DevOps) to Terraform 1.12.2. Update manually-authored
documentation, the copilot terraform bead, blueprint and component
READMEs, scenario prerequisites, and developer guides to reflect the
new floor. Regenerate terraform-docs across src/, blueprints/, ci/,
and deploy/azdo/.

BREAKING CHANGE: Operators must upgrade their local Terraform CLI to
>= 1.12.0 before running any terraform command in this repository.

Closes #484
@katriendg katriendg requested a review from a team as a code owner May 7, 2026 11:54
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

📚 Documentation Health Report

Generated on: 2026-05-07 12:06:01 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented May 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 32.41%. Comparing base (40c1ef6) to head (b60b8c2).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #487   +/-   ##
=======================================
  Coverage   32.41%   32.41%           
=======================================
  Files          40       40           
  Lines        5902     5902           
=======================================
  Hits         1913     1913           
  Misses       3989     3989           
Flag Coverage Δ
rust 32.41% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…d requirements

- standardize table formatting across multiple module README files
- ensure Terraform version requirements are clearly stated
- improve clarity in input and output sections

🔧 - Generated by Copilot
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

📚 Documentation Health Report

Generated on: 2026-05-07 12:46:36 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

📚 Documentation Health Report

Generated on: 2026-05-07 13:56:23 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

Copy link
Copy Markdown
Member

@bindsi bindsi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Approved

Clean, well-scoped breaking change. Audited all 307 files: 306 are pure mechanical 1.9.81.12.0 bumps (or column-width reflows in regenerated terraform-docs tables), and the lone structural diff in src/100-edge/100-cncf-cluster/ci/terraform/README.md is a beneficial normalization away from a JSON-encoded outlier into the standard markdown layout used by every sibling README. CI runner pins to 1.12.2 are consistent across all four workflow files. Title feat(terraform)!: will surface a proper BREAKING CHANGE in release-please. Devcontainer uses the unpinned ghcr.io/devcontainers/features/terraform:1 feature, so no follow-up pin to chase there.

The tests/setup/main.tf additions beyond issue #484's enumerated 163 files are correct — leaving those at 1.9.8 would have created an inconsistent floor.

NITs (non-blocking, future-PR material)

  • nit (tooling): The author noted npm run tf-docs doesn't cover ci/terraform/ or deploy/azdo/modules/ and required manual terraform-docs invocations. Worth a follow-up issue to widen the npm script glob (or add a doc-freshness CI check) so those paths can't drift again — the cncf-cluster ci/terraform/README.md outlier in this PR is exactly the kind of thing the gap allows.
  • nit (PR description): Consider adding a single line to "Implementation Details" calling out the cncf-cluster ci/terraform/README.md structural normalization (−152 / +46) so future archaeologists scanning this diff don't have to wonder why one file is much larger than the others.
  • nit (release notes): When this lands, a one-liner in the next release summary stating "minimum local Terraform CLI is now >= 1.12.0" will help operators who don't read every commit subject.

Nothing here blocks merge — ship it once pr-validation is green on the new 1.12.2 pin.

@WilliamBerryiii
Copy link
Copy Markdown
Member

I filed issue #495 to track the feedback ...

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

📚 Documentation Health Report

Generated on: 2026-05-08 23:49:51 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

@github-actions
Copy link
Copy Markdown

📚 Documentation Health Report

Generated on: 2026-05-11 18:32:06 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

@github-actions
Copy link
Copy Markdown

📚 Documentation Health Report

Generated on: 2026-05-12 07:01:06 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

@github-actions
Copy link
Copy Markdown

📚 Documentation Health Report

Generated on: 2026-05-12 07:12:45 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

@github-actions
Copy link
Copy Markdown

📚 Documentation Health Report

Generated on: 2026-05-12 09:06:17 UTC

📈 Documentation Statistics

Category File Count
Main Documentation 219
Infrastructure Components 197
Blueprints 39
GitHub Resources 44
AI Assistant Guides (Copilot) 17
Total 516

🏗️ Three-Tree Architecture Status

  • ✅ Bicep Documentation Tree: Auto-generated navigation
  • ✅ Terraform Documentation Tree: Auto-generated navigation
  • ✅ README Documentation Tree: Manual README organization

🔍 Quality Metrics

  • Frontmatter Validation:
    success
  • Link Validation: success

This report is automatically generated by the Documentation Automation workflow.

@katriendg katriendg merged commit 49229da into main May 12, 2026
59 of 60 checks passed
@katriendg katriendg deleted the feat/484-tf-version branch May 12, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(terraform): upgrade project-wide Terraform version floor to >= 1.12.0

4 participants