Skip to content

Conversation

@josielsouzanordcloud
Copy link
Contributor

Description

This PR introduces a robust testing and quality assurance framework for our Terraform modules. It bridges the gap between local development and CI by providing standardised make targets and updating the GitHub Actions pipeline to use dynamic tool versions and enhanced security/linting checks.

Key changes

Terraform Module Quality

  • Automated Testing: Added a Go-based test suite (using Terratest) for the managed-identity module. These tests validate input constraints (naming rules) "offline" without requiring Azure credentials.
  • Version Pinning: Added versions.tf to the managed-identity module to ensure compatibility with Terraform >= 1.0 and AzureRM >= 3.0.
  • Documentation: Created a comprehensive README.md for the managed-identity module with usage examples and naming constraints.

Tooling & Local Workflow

  • Streamlined Make Targets: Added terraform-lint, terraform-security, and terraform-test (all-in-one) targets to scripts/terraform/terraform.mk.
  • Cleanup: Removed redundant boilerplate test targets (e.g., test-ui, test-load) from the template to reduce make help clutter.
  • Tool Management: Updated .tool-versions to include tflint, tfsec, and golang.
  • Simpler Interface: Disabled unused Docker make includes to focus the project on Terraform.

CI/CD Pipeline Upgrades

  • Dynamic Versions: Updated GitHub workflows to pull tool versions directly from .tool-versions, ensuring consistency between environments.
  • Security Integration: Integrated tfsec with SARIF output, uploading findings directly to the GitHub Security tab.
  • CI Robustness: Fixed tflint pipeline failures by adding GITHUB_TOKEN for plugin downloads and implementing module-level initialisation.

Type of changes

  • Refactoring (non-breaking change)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would change existing functionality)
  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • I am familiar with the contributing guidelines
  • I have followed the code style of the project
  • I have added tests to cover my changes
  • I have updated the documentation accordingly
  • This PR is a result of pair or mob programming

Sensitive Information Declaration

To ensure the utmost confidentiality and protect your and others privacy, we kindly ask you to NOT including PII (Personal Identifiable Information) / PID (Personal Identifiable Data) or any other sensitive data in this PR (Pull Request) and the codebase changes. We will remove any PR that do contain any sensitive information. We really appreciate your cooperation in this matter.

  • I confirm that neither PII/PID nor sensitive data are included in this PR and the codebase changes.

#268)

- Add azurerm_relay_namespace resource
  - Add optional private endpoint configuration
  - Add diagnostic settings integration
  - Add README with usage examples and naming constraints

feat: add relay-hybrid-connection module for Azure Relay Hybrid Connections (#269)

Adds a new Terraform module to create Azure Relay Hybrid Connections and
  Authorization Rules. The module is designed to work with an existing relay
  namespace created by the relay-namespace module.

Add support for excluding paths from Entra ID authentication (#270)

Allow container apps to specify paths (e.g., /healthcheck, /sha) that
  bypass authentication via the new auth_excluded_paths variable.
  Updated tfdocs

feat: added alerts for Key Vault secrets nearing or past expiry (#271)

feat: added alerts for key kault certificates nearing or past expiry (#272)

fix: added default values for secret and certificate expiry alerts (#273)

test: add Terraform module testing and
   security scanning

   - Add Terratest tests for managed-identity module
     - Valid inputs validation
     - Invalid inputs validation (name format)
     - Tests run offline (no Azure credentials required)

   - Add tflint integration (advisory)
     - Scans all modules for best practice violations
     - Reports issues in workflow summary
     - Non-blocking (178 existing issues baselined)

   - Add tfsec with GitHub Code Scanning (advisory)
     - Security scanning for Terraform misconfigurations
     - Results appear in Security tab, not public artifacts
     - Non-blocking (7 existing issues baselined)

   - Clean up workflow
     - Remove irrelevant jobs (unit tests, coverage, lint)
     - Update CodeQL action to v4
     - Fix Go cache restore issues

feat: integrate terraform quality tools and streamline local workflow

   - Add targets for terraform-lint, terraform-security, and terraform-test to Makefiles
   - Update CI/CD pipelines to dynamically use tool versions from .tool-versions
   - Clean up redundant boilerplate make targets to reduce clutter
   - Fix managed-identity linting issues by adding missing versions.tf
   - Disable unused Docker make includes to simplify the developer interface

fix wrong line endings or no final newline

removed redundant root All plugins are already installed, added  to the linting loop and add check of exist tf file in a folder

fix traiting whitespaces

Amend managed identity testing to remove redundant provider

remove comments
@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

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.

1 participant