Skip to content

devops-workflow/pre-commit-terraform

 
 

Repository files navigation

pre-commit-terraform hook

Repo Badges info
This fork Github release
Upstream Github tag Help Contribute to Open Source

Several pre-commit hooks to keep Terraform configurations (both *.tf and *.tfvars) in a good shape:

  • terraform_docs - Inserts input and output documentation into README.md.
  • terraform_fmt - Rewrites all Terraform configuration files to a canonical format.
  • terraform_graph - Generates resource graph and inserts into README.md
  • terraform_template - Ensures that all files in template exist locally and maintained files are current
  • terraform_tools - Install and update all tools required by hooks in this repo
  • terraform_validate_no_variables - Validates all Terraform configuration files without checking whether all required variables were set.
  • terraform_validate_with_variables - Validates all Terraform configuration files and checks whether all required variables were specified.
  • tflint - Lint check Terraform files. Configures tflint for terraform version and to ignore all modules (due to tflint not handling registry format)

Notes about hooks

  1. terraform_validate_no_variables and terraform_validate_with_variables will not work if variables are being set dynamically (eg, when using Terragrunt). Use terragrunt validate command instead.

  2. terraform_docs will insert/update documentation generated by terraform-docs between markers - <!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> and <!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> if they are present in README.md. Make sure that terraform-docs is installed.

Example

.pre-commit-config.yaml:

repos:
  - repo: https://github.com/devops-workflow/pre-commit-terraform
    rev: v1.13.0
    hooks:
      - id: terraform_tools
      - id: terraform_template
      - id: terraform_fmt
      - id: terraform_docs
      - id: terraform_graph
      - id: tflint

Enjoy the clean and documented code!