DEV Community

Cover image for Custom providers for Terraform
Pavel Kutáč
Pavel Kutáč

Posted on

2

Custom providers for Terraform

Terraform is a tool for managing infrastructure with config files. It supports many cloud providers like GCP, AWS but also Datadog, and many others. But if you are developing your own service, which should be manageable by Terraform, you have to write your own provider.


🇨🇿 V češtině si lze článek přečíst na kutac.cz

Manage infrastructure without Terraform means to log in to the Console of the provider and set up everything by clicking in the UI. However, it is hard to backup, version, and replicate for other environments like staging. And that is the reason why we have Terraform. If you don't know much about Terraform, watch Terraform in 100s video before we dive into writing own providers.

Basic schema of Terraform

Behind the scenes

Before writing own provider, let's look at how Terraform works in the background. Terraform first reads all *.tf files and prepares dependency graph - the execution plan. Based on the plan Terraform then can perform CRUD operations. Those methods must be implemented in the provider which is responsible for calling backend API. So Terraform does not care if you use REST, gRPC, or SOAP gRPC API.

Terraform core just parses the file and performs the plan by calling the provider's CRUD functions. Theoretically, someone could write blog posts with Terraform.

Schema of communication between Terraform Core and backend API

Demo app

I created a sample project which contains a simple HTTP server with REST API. And also a custom provider which is communicating with that HTTP server. So you can easily play with the provider and Terraform. Full code can be found on my GitHub github.com/arxeiss/sample-terraform-provider

# Start the HTTP server
make start_server 

# Build Terraform provider
make terraform_build 

# All *.tf files are in config subfolder
cd provider/config 
terraform plan # to show plan which will be executed
terraform apply # to execute the plan
Enter fullscreen mode Exit fullscreen mode

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay