diff --git a/docs/09-ansible-playbooks.md b/docs/09-ansible-playbooks.md new file mode 100644 index 0000000..ed4ba19 --- /dev/null +++ b/docs/09-ansible-playbooks.md @@ -0,0 +1,156 @@ +# 09. Ansible — плейбуки и запуск + +## 🎯 Основной плейбук: `olimp-deploy.yml` + +Это главный плейбук, который управляет развёртыванием всех сервисов. Он разбит на секции по группам хостов (определены в `inventories/hosts`). Каждая секция включает: + +- Загрузку секретов из `vault.yml`. +- Применение ролей, специфичных для данной группы. +- Использование тегов для гибкого запуска отдельных частей. + +--- + +## 🧩 Структура плейбука + +Плейбук последовательно обрабатывает группы хостов в следующем порядке: + +1. **Все хосты, кроме Proxmox** (`all:!pve-server`) + - Роль `base_setup` — базовая настройка (пакеты, время, SSH-ключи). + - Роль `system_cleanup` — удаление ненужных пакетов. + - Роль `promtail` — агент сбора логов. + +2. **Proxmox** (`pve-server`) + - Роль `proxmox_base_setup` — настройка Proxmox (репозитории, обновления). + - Роль `proxmox_monitoring` — установка pve_exporter, node_exporter. + +3. **Gateway** (`gateway-server`) + - Роль `docker` — установка Docker и Docker Compose. + - Роль `npm` — Nginx Proxy Manager. + - Роль `heimdall` — дашборд Heimdall. + - (Роль `dashy` закомментирована, не используется.) + +4. **Data** (`data-server`) + - Роль `docker` + - Роль `mealie` — менеджер рецептов. + - Роль `bookstack` — вики. + - Роль `bitwarden` — менеджер паролей (Vaultwarden). + +5. **Media** (`media-server`) + - Роль `docker` + - Роль `ampache` — музыкальный стриминг. + - Роль `audiobookshelf` — аудиокниги. + - Роль `calibre-web` — веб-интерфейс для библиотеки Calibre. + - Роль `jellyfin` — медиасервер. + - Роль `flibusta` — зеркало библиотеки Флибуста. + +6. **Photo** (`photo-server`) + - Роль `docker` + - Роль `immich` — фотогалерея. + +7. **Talk** (`talk-server`) + - Роль `docker` + - Роль `mumble` — голосовой чат. + - Роль `snikket` — XMPP-сервер. + - (Роль `teamspeak` закомментирована.) + +8. **Games** (`games-server`) + - Роль `docker` + - (Роль `minecraft` закомментирована) + +9. **Manage** (`manage-server`) + - Роль `docker` + - Роль `meshcentral` — удалённое управление. + - Роль `grafana` — визуализация метрик. + - Роль `loki` — сбор и хранение логов. + +10. **Git** (`git-server`) + - Роль `docker` + - Роль `gitlab` — GitLab CE. + +11. **Torrent** (`torrent-server`) + - Роль `docker` + - Роль `torrserver` — стриминг торрентов. + - Роль `qbittorrent` — торрент-клиент. + +12. **Тестовый хост** (`testtalk-server`) + - Роль `docker` + - Роль `snikket` (используется для тестирования). + +--- + +## 🏷️ Теги + +Каждая роль имеет тег, что позволяет запускать только её: + +| Тег | Роль | Назначение | +|------------------------|----------------------------|----------------------------------| +| `deploy_base` | base_setup | Базовая настройка | +| `deploy_cleanup` | system_cleanup | Очистка системы | +| `deploy_promtail` | promtail | Агент логов | +| `deploy_proxmox_base` | proxmox_base_setup | Настройка Proxmox | +| `deploy_proxmox_monitoring` | proxmox_monitoring | Мониторинг Proxmox | +| `deploy_docker` | docker | Установка Docker | +| `deploy_npm` | npm | Nginx Proxy Manager | +| `deploy_heimdall` | heimdall | Heimdall | +| `deploy_mealie` | mealie | Mealie | +| `deploy_bookstack` | bookstack | Bookstack | +| `deploy_bitwarden` | bitwarden | Bitwarden/Vaultwarden | +| `deploy_ampache` | ampache | Ampache | +| `deploy_audiobookshelf`| audiobookshelf | Audiobookshelf | +| `deploy_calibre_web` | calibre-web | Calibre Web | +| `deploy_jellyfin` | jellyfin | Jellyfin | +| `deploy_flibusta` | flibusta | Flibusta | +| `deploy_immich` | immich | Immich | +| `deploy_mumble` | mumble | Mumble | +| `deploy_snikket` | snikket | Snikket (XMPP) | +| `deploy_meshcentral` | meshcentral | MeshCentral | +| `deploy_grafana` | grafana | Grafana + VictoriaMetrics | +| `deploy_loki` | loki | Loki | +| `deploy_gitlab` | gitlab | GitLab | +| `deploy_torrserver` | torrserver | TorrServer | +| `deploy_qbittorrent` | qbittorrent | qBittorrent | + +--- + +## 🚀 Запуск плейбука + +### Полный запуск (все роли) + +```bash +ansible-playbook olimp-deploy.yml --ask-vault-pass +``` + +### Запуск только определённой роли (по тегу) + +```bash +ansible-playbook olimp-deploy.yml --tags deploy_jellyfin --ask-vault-pass +``` + +### Запуск на конкретном хосте + +```bash +ansible-playbook olimp-deploy.yml --limit media-server --ask-vault-pass +``` + +### Проверка синтаксиса + +```bash +ansible-playbook olimp-deploy.yml --syntax-check +``` + +### Сухой запуск (dry-run) + +```bash +ansible-playbook olimp-deploy.yml --check --ask-vault-pass +``` + +--- + +## 📌 Примечания + +- Некоторые роли закомментированы (`dashy`, `teamspeak`, `minecraft`), так как они либо не используются, либо требуют дополнительной настройки. +- Все роли, где есть секреты, используют `vault.yml`, поэтому обязательно указывать `--ask-vault-pass` или настроить `vault_password_file`. + +--- + +*Далее: [Роли (roles)](09-ansible-roles.md)* \ No newline at end of file