» Extending Terraform

Terraform can be extended to allow users to manage more infrastructure providers with Providers (containing Resources and/or Data Sources), more options to store Terraform state with Backends and more options to provision instance with Provisioners. Providers and Provisioners are collectively categorized as "Plugins".

The Extending Terraform section contains content for users who wish to extend Terraform. The intended audience is anyone wanting to add or edit source code (“developers”) for either Terraform itself or a Terraform Plugin. The content assumes you have basic operating knowledge or experience using Terraform.

Below is a brief description of each section. The content is organized from simplest to most complex — developers new to writing code for Terraform should start at the top.

» How Terraform Works

High level overview of how the Terraform tool works. Learn about the logical components of Terraform (Core vs. Plugins) and the basics of how they interact.

» Plugin Types

Learn about the different types of Terraform plugins — Providers and Provisioners.

» Writing Custom Providers

A step by step guide for writing, compiling, and executing an example Terraform Provider.

» Schemas

The Schema package is a high-level framework for easily writing Plugins for Terraform. Providers (with Resources and/or Data Sources), and Provisioners are all defined in terms of the Schema package, which includes builtin types and methods for developers to use when writing plugins.

» Community

Terraform is a mature project with a growing community. There are active, dedicated people willing to help you through various mediums.