Terraform is a Hashicorp tool that allows configuring external services with config files.


For any service that provides external API, you can write a “provider.” Terraform provider defines what “resources” can be configured in this service.

Terraform Provider

There are already official providers for popular services:

To understand what changed since the last run, Terraform needs to store the state of the resources in a file, S3 bucket, or somewhere else.

If you don’t want to deal with configuring CI/CD and storing the state, Hashicorp provides a service called Terraform Cloud.

Unfortunately, Terraform does not yet know how to generate configuration files for already configured services. But you can use Terraformer for that.

There are a few other tools that can make life with Terraform better: