Terraform это инструмент от Hashicorp который позволяет настраивать внешние сервисы с помощью конфигурационных файлов.
https://www.terraform.io
https://github.com/hashicorp/terraform
Для любого сервиса который отдаёт наружу API можно написать “провайдера” Terraform. Провайдер опеределяет какие “ресурсы” можно настраивать в этом сервисе.
А для популярных сервисов уже есть официальные провайдеры:
Чтобы понимать, что изменилось с последнего запуска, Terraform нужно где-то хранить “состояние”: в локальном файле, или в S3-бакете или где-то ещё. Если не хочется заморачиваться с настройкой CI/CD и хранением состояния, Hashicorp предоставляет облачный сервис Terraform Cloud.
К сожалению, Terraform пока не умеет генерировать конфигурационные файлы по уже настроенным сервисам. Для этого есть Terraformer.
Есть ещё несколько инструментов которые могут сделать жизнь с Terraform лучше: