Skip to content

Experimental: TFLint plugin SDK for building custom rules

License

Notifications You must be signed in to change notification settings

terraform-linters/tflint-plugin-sdk

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Repository files navigation

TFLint plugin SDK

Build Status GitHub release go.dev reference License: MPL 2.0

TFLint plugin SDK for building custom rules.

NOTE: This plugin system is experimental. This means that API compatibility is frequently broken.

Requirements

  • TFLint v0.40+
  • Go v1.20

Usage

Please refer to tflint-ruleset-template for an example plugin implementation using this SDK.

For more details on the API, see tflint and helper packages on pkg.go.dev.

Architecture

architecture

This plugin system uses go-plugin. TFLint launches the plugin as a sub-process and communicates with the plugin over gRPC. The plugin acts as a server, while TFLint acts as a client that sends inspection requests to the plugin.

On the other hand, the plugin sends various requests to a server (TFLint) to get detailed runtime contexts (e.g. variables and expressions). This means that TFLint and plugins can act as both a server and a client.

These implementations are included in the plugin/host2plugin and plugin/plugin2host packages.