# 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)*