All pages
Powered by GitBook
1 of 1

Loading...

Code styling

  • Examples and Terraform modules should contain documentation explaining features and how to use them.

  • All links in README.md files should be absolute to make Terraform Registry website show them correctly.

  • Documentation may include diagrams created with and blueprints created with .

  • Use to make sure that the code is valid, properly formatted, and automatically documented before it is pushed to git and reviewed by humans.

Formatting

Terraform’s terraform fmt command enforces the canonical style for configuration files. The tool is intentionally opinionated and non-configurable, guaranteeing a uniform format across codebases so reviewers can focus on substance rather than style. Integrate it with to validate and format code automatically before it reaches version control.

For example:

In CI pipelines, use terraform fmt -check to verify compliance. It exits with status 0 when all files are correctly formatted; otherwise, it returns a non-zero code and lists the offending files. Centralizing formatting in this way removes merge friction and enforces a consistent standard across teams.

Editor Configuration

  • Use .editorconfig: helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs. Include an .editorconfig file in your repositories to maintain consistent whitespace and indentation.

Example .editorconfig:

Documentation

Automatically generated documentation

is a framework for managing and maintaining multi-language pre-commit hooks. It is written in Python and is a powerful tool to do something automatically on a developer's machine before code is committed to a git repository. Normally, it is used to run linters and format code (see ).

With Terraform configurations pre-commit can be used to format and validate code, as well as to update documentation.

Check out the to familiarize yourself with it, and existing repositories (eg, ) where this is used already.

terraform-docs

is a tool that does the generation of documentation from Terraform modules in various output formats. You can run it manually (without pre-commit hooks), or use to get the documentation updated automatically.

Comment style

Use # for comments. Avoid // or block comments.

Example:

Section Headers: Delimit section headers in code with # ----- or ###### for clarity.

Example:

@todo: Document module versions, release, GH actions

Resources

  1. Blog post by :

mermaid
cloudcraft.co
Terraform pre-commit hooks
Terraform pre-commit hooks
EditorConfig
pre-commit
supported hooks
pre-commit-terraform repository
terraform-aws-vpc
terraform-docs
pre-commit-terraform hooks
pre-commit framework homepage
Collection of git hooks for Terraform to be used with pre-commit framework
Dean Wilson
pre-commit hooks and terraform - a safety net for your repositories
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/antonbabenko/pre-commit-terraform
    rev: v1.99.4
    hooks:
      - id: terraform_fmt
[*]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

[*.{tf,tfvars}]
indent_style = space
indent_size = 2

[Makefile]
indent_style = tab
# This is a comment explaining the resource
resource "aws_instance" "this" {
# ...
}
# --------------------------------------------------
# AWS EC2 Instance Configuration
# --------------------------------------------------

resource "aws_instance" "this" {
# ...
}