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.
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: