[Документация Yandex Cloud](../../index.md) > [Terraform в Yandex Cloud](../index.md) > Концепции > Обзор

# Обзор

[Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).

## Основные преимущества {#main-advantages}

* Автоматизация: Terraform позволяет быстро и легко создавать, изменять и удалять облачные [ресурсы](resources.md), что упрощает управление инфраструктурой.
* Повторное использование кода: Terraform поддерживает [модули](modules.md), которые можно повторно использовать в разных проектах. Это позволяет сократить время на разработку и тестирование.
* Безопасность: Terraform обеспечивает контроль версий и аудит изменений инфраструктуры c с помощью фиксирующихся [состояний](states.md). Это помогает предотвратить несанкционированные изменения и обеспечить безопасность данных.

## Как работает Terraform {#how-it-works}

Terraform использует декларативный подход к управлению инфраструктурой ([Infrastructure as Code](https://en.wikipedia.org/wiki/Infrastructure_as_code), IaC). В декларативном подходе вы описываете желаемое состояние инфраструктуры, а Terraform автоматически создает, изменяет или удаляет ресурсы, чтобы привести инфраструктуру в это состояние.

Для работы с Terraform вам потребуется установить его на свой компьютер, настроить провайдер и создать файлы конфигурации (`*.tf`), которые будет описывать вашу инфраструктуру на [языке HCL](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md). Затем вы можете использовать команды Terraform для создания, изменения или удаления ресурсов.

## Пример использования {#example}

Предположим, вы хотите создать виртуальную машину в Yandex Cloud. Следующий код описывает конфигурацию ВМ `terraform1` с 2 ядрами и 2 ГБ оперативной памяти, загрузочным диском `boot-disk-1`, сетевым интерфейсом, подключенным к подсети `subnet-1`, публичным IP-адресом и SSH-ключом из файла по указанному пути:

```
resource "yandex_compute_instance" "vm-1" {
  name = "terraform1"

  resources {
    cores  = 2
    memory = 2
  }

  boot_disk {
    disk_id = yandex_compute_disk.boot-disk-1.id
  }

  network_interface {
    subnet_id = yandex_vpc_subnet.subnet-1.id
    nat       = true
  }

  metadata = {
    ssh-keys = "ubuntu:${file("~/.ssh/id_ed25519.pub")}"
  }
}
```

Это лишь небольшой пример того, как можно использовать Terraform. С помощью этого инструмента вы можете создавать сложные инфраструктуры с множеством ресурсов и зависимостей, передавать метаданные, управлять ресурсами с помощью сервисных аккаунтов и многое другое.

## Полезные ссылки {#see-also}

* [Провайдеры](providers.md)
* [Ресурсы](resources.md)
* [Состояние](states.md)
* [Источники данных в Terraform](data-sources.md)