add: documentation
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# Структура Terraform проекта
|
||||
|
||||
## Почему важно разделять манифесты
|
||||
|
||||
Если ресурсы не зависят друг от друга, лучше разделять их по разным папкам или разным state. Тогда сбой одного ресурса не блокирует применение остальных.
|
||||
|
||||
Если ресурсы взаимозависимы (например, сеть -> ВМ), их стоит держать вместе, чтобы Terraform применял изменения в правильном порядке.
|
||||
|
||||
## Важно: все .tf в папке объединяются
|
||||
|
||||
Terraform рассматривает все `.tf` в одной папке как единый конфигурационный файл. Это значит:
|
||||
|
||||
- Все ресурсы и переменные в папке находятся в одном graph.
|
||||
- Ошибка одного ресурса может остановить `apply` для всех остальных.
|
||||
- При `destroy` Terraform будет удалять все ресурсы из этой папки.
|
||||
|
||||
## Рекомендуемая структура
|
||||
|
||||
- Один каталог = один независимый стек.
|
||||
- Для каждого стека отдельные `main.tf`, `variables.tf`, `outputs.tf`.
|
||||
- Для разных окружений использовать разные каталоги.
|
||||
|
||||
Пример:
|
||||
|
||||
```
|
||||
project/
|
||||
stacks/
|
||||
vm-a/
|
||||
main.tf
|
||||
variables.tf
|
||||
vm-b/
|
||||
main.tf
|
||||
variables.tf
|
||||
edge/
|
||||
main.tf
|
||||
variables.tf
|
||||
```
|
||||
|
||||
## Импорт ресурсов
|
||||
|
||||
Импорт используется, когда ресурс уже существует, но Terraform его не создавал.
|
||||
|
||||
Общий подход:
|
||||
|
||||
1. Создать ресурс в `.tf` с корректными аргументами.
|
||||
2. Выполнить `terraform import`.
|
||||
3. Сделать `terraform plan` и убедиться, что нет изменений.
|
||||
|
||||
Важно:
|
||||
|
||||
- Импорт добавляет ресурс в state, но не создает его.
|
||||
- После импорта нужно обязательно сверить параметры в `.tf`.
|
||||
|
||||
## Удаление ресурсов
|
||||
|
||||
Удаление зависит от того, где находится ресурс:
|
||||
|
||||
- Если ресурс прописан в `.tf`, Terraform удалит его при `destroy`.
|
||||
- Если ресурс удален из `.tf`, Terraform удалит его при следующем `apply`.
|
||||
|
||||
Рекомендация: перед удалением делать `plan`, чтобы увидеть список ресурсов, которые будут удалены.
|
||||
|
||||
## Что делать при ошибках
|
||||
|
||||
- Разделяйте независимые ресурсы по разным папкам.
|
||||
- Проверяйте `plan` перед `apply`.
|
||||
- Для проблемного ресурса работайте в его отдельном стеке.
|
||||
Reference in New Issue
Block a user