add: documentation

This commit is contained in:
“Naeel”
2026-06-30 15:45:24 +04:00
parent 540c1f7293
commit ca276d200f
1055 changed files with 47294 additions and 0 deletions
@@ -0,0 +1,99 @@
# Справочник по Terraform для начинающих
Terraform — это инструмент для управления инфраструктурой как кодом (IaC). Он позволяет вам описывать желаемое состояние вашей инфраструктуры в текстовых файлах, а затем автоматически создавать, изменять и удалять облачные ресурсы, чтобы они соответствовали этому описанию.
Здесь собраны основные команды, которые вы будете использовать в 99% случаев.
## Основной рабочий процесс
### 1. `terraform init`
**"Инициализация"**
Первая команда, которую нужно выполнить в новой директории с конфигурацией.
* Скачивает необходимые плагины (провайдеры), описанные в `main.tf`.
* Настраивает "бэкенд" (хранилище состояния).
```bash
terraform init
```
### 2. `terraform validate`
**"Проверка синтаксиса"**
Проверяет ваши файлы конфигурации (`.tf`) на наличие синтаксических ошибок и корректность использования атрибутов. Не обращается к облаку, только статический анализ.
```bash
terraform validate
```
### 3. `terraform plan`
**"План действий"**
Самая важная команда для безопасности. Она сравнивает ваш код с реальным состоянием облака и показывает, что *произойдет*, если вы примените изменения.
* `+` (зеленый): будет добавлено.
* `~` (желтый): будет изменено.
* `-` (красный): будет удалено.
```bash
terraform plan
```
### 4. `terraform apply`
**"Применение"**
Выполняет действия, запланированные на предыдущем шаге. Создает, меняет или удаляет реальные ресурсы в облаке Nubes.
* Всегда запрашивает подтверждение `yes` перед стартом (если не указан флаг `-auto-approve`).
```bash
terraform apply
```
### 5. `terraform destroy`
**"Уничтожение"**
Удаляет **все** ресурсы, описанные в текущей конфигурации Terraform. Используйте осторожно, чтобы очистить тестовое окружение.
* Также требует подтверждения `yes`.
```bash
terraform destroy
```
## Дополнительные полезные команды
* `terraform fmt`: Автоматически форматирует ваш код (расставляет отступы), делая его красивым и аккуратным.
* `terraform output`: Выводит значения "outputs", если вы их определили (например, IP-адреса созданных серверов).
* `terraform state list`: Показывает список ресурсов, про которые "знает" терраформ в данный момент.
## Когда использовать `terraform state rm`
`terraform state rm` удаляет ресурс **только из Terraform state**, но **не удаляет** его в облаке.
Используйте эту команду, когда:
* ресурс уже удалён в облаке вручную/вне Terraform;
* `plan` падает ошибкой вида "экземпляр ... удален";
* нужно заставить Terraform считать ресурс новым и создать его заново на следующем `apply`.
Пример:
```bash
terraform state rm nubes_postgres.db2
terraform plan
terraform apply
```
### Отличие от `terraform import`
* `terraform state rm` — "забыть" ресурс в state.
* `terraform import` — "подхватить" уже существующий ресурс в state.
Если ресурс в облаке действительно удалён, обычно нужен именно `state rm`, а не `import`.
---
!!! tip "Совет"
Всегда выполняйте `terraform plan` перед `apply`, чтобы убедиться, что вы случайно не удаляете важные ресурсы.