Terraform is actually split into two parts:
One part is the Terraform engine that knows how to get from the state your infrastructure is currently into the state you want your infrastructure to be in.
The other part is the provider, which talks to the infrastructure to find out the current state and make changes using the infrastructure’s API.
Due to the clever way Terraform is split, there are providers available for practically anything you can think of. This allows you to use Terraform to configure infrastructure in AWS, Azure, GCP, Oracle Cloud Platform, and just about any other cloud you can think of. It can also be used to configure a huge variety of other components that make up your environment, such as Kong, Postgres, Runscope, Auth0, Couchbase, and TeamCity. If for some reason there is not a provider for it, you can write your own and use that in your project.