add: documentation
This commit is contained in:
@@ -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`, чтобы убедиться, что вы случайно не удаляете важные ресурсы.
|
||||
Reference in New Issue
Block a user