Terraform
Terraform — Infrastructure-as-Code инструмент, который позволяет безопасно и эффективно создавать, изменять и создавать версии инфраструктуры.
Terraform позволяет быстро создать инфраструктуру в облачных сервисах и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language).
https://cloud.yandex.ru/docs/tutorials/infrastructure-management/terraform-quickstart
https://habr.com/ru/companies/otus/articles/696694/
Провайдеры
Terraform – мультиплатформенный инструмент. Это достигается через провайдеры. Провайдеры позволяют Terraform взаимодействовать с публичными облачными платформами, сетевой инфраструктурой, системами мониторинга, БД, системами контроля версий.

Hashicorp Configuration Language
HCL — декларативный язык для определения ресурсов инфраструктуры, которые должны быть предоставлены в виде блоков кода.
"Декларативный" означает, что код описывает желаемое нами состояние инфраструктуры.
Принцип работы
Terraform работает в 3 этапа:
- Init. Инициализация проекта и определение провайдеров, которые будут использоваться для целевой среды.
- Plan. Составление плана перехода в целевое состояние.
- Apply. Приведение среды в целевое состояние.
Ресурсы
Ресурс — каждый объект, которым управляет Terraform. Может быть вычислительным экземпляром, сервером в облаке или физическим локальным сервером.

Terraform управляет ЖЦ ресурсов от создания и конфигурации до вывода из эксплуатации.
Terraform записывает состояние инфраструктуры terraform.tfstate. На основе этой информации он определяет, какие действия необходимо совершить для приведения среды в целевое состояние.
Terraform может гарантировать, что вся инфраструктура находится в определенном состоянии terraform.tfstate.
Пример файла конфигурации для создания локального файла:

Создание ресурса
Создайте файл конфигурации, например, для создания локального файла:
resource "local_file" "resource_name" {
filename = "/root/file.txt"
content = "Hello World!"
}Выполните команду
terraform init. Команда проверяет файл конфигурации и инициализирует рабочую папку с TF-файлом.Выполните команду
terraform plan. Команда покажет действия, которые будут выполнены для создания ресурса.Выполните команду
terraform apply. Команда снова покажет планируемые действия.Укажите
Yesдля подтвержения действий. Начнется создание ресурса.При необходимости выполните команду
terraform show. Команда покажет подробную информацию о ресурсе.
Удаление инфраструктуры
- Выполните команду
terraform destroy. Команда покажет действия, которые будут выполнены для удаления инфраструктуры. - Укажите
Yesдля подтвержения действий.