Skip to content

Configuration Profiles

Profiles allow you to define multiple configurations for different environments or use cases.

Overview

Profiles enable you to:

  • Define different rule sets for development vs CI
  • Create team-specific configurations
  • Switch between strict and relaxed checking

Defining Profiles

Add profiles to your .terratidy.yaml:

version: 1

# Default configuration
engines:
  fmt:
    enabled: true
  style:
    enabled: true
  lint:
    enabled: true
  policy:
    enabled: false

# Profile definitions
profiles:
  ci:
    engines:
      fmt:
        enabled: true
      style:
        enabled: true
      lint:
        enabled: true
      policy:
        enabled: true

  development:
    engines:
      fmt:
        enabled: true
      style:
        enabled: true
      lint:
        enabled: false
      policy:
        enabled: false

  strict:
    engines:
      fmt:
        enabled: true
      style:
        enabled: true
      lint:
        enabled: true
      policy:
        enabled: true
    overrides:
      rules:
        style.block-label-case:
          severity: error

Using Profiles

Command Line

# Use a specific profile
terratidy check --profile ci

# Override severity threshold
terratidy check --profile ci --severity-threshold error

CLI Flag

terratidy check --profile ci

VS Code

Configure in settings:

{
  "terratidy.profile": "development"
}

Profile Inheritance

Profiles inherit from the base configuration and override specific settings:

version: 1

# Base configuration
engines:
  fmt:
    enabled: true
  style:
    enabled: true

profiles:
  # Inherits fmt and style from base, adds lint
  ci:
    engines:
      lint:
        enabled: true

  # Overrides rules from base
  strict:
    engines:
      lint:
        enabled: true
    overrides:
      rules:
        style.block-label-case:
          severity: error

Common Profile Patterns

Development Profile

Fast feedback with minimal checks:

profiles:
  development:
    engines:
      fmt:
        enabled: true
      style:
        enabled: true
      lint:
        enabled: false
      policy:
        enabled: false

CI Profile

Comprehensive checks for pull requests:

profiles:
  ci:
    engines:
      fmt:
        enabled: true
      style:
        enabled: true
      lint:
        enabled: true
      policy:
        enabled: true

Pre-commit Profile

Quick checks for commit hooks:

profiles:
  pre-commit:
    engines:
      fmt:
        enabled: true
      style:
        enabled: true
      lint:
        enabled: false
      policy:
        enabled: false

Security Profile

Security-focused checks only:

profiles:
  security:
    engines:
      fmt:
        enabled: false
      style:
        enabled: false
      lint:
        enabled: true
      policy:
        enabled: true
        config:
          policy_dirs:
            - ./policies/security
    overrides:
      rules:
        security-group-unrestricted:
          enabled: true
          severity: error

Team Profiles

Share profiles across your organization:

# .terratidy.yaml in your module
version: 1

imports:
  - .terratidy/*.yaml

profiles:
  team-a:
    inherits: ci
    engines:
      policy:
        config:
          policy_dirs:
            - ./policies/team-a

Viewing Profile Configuration

# Show resolved configuration for a profile
terratidy config show --profile ci