Docs/docs/09-ansible-playbooks.md
2026-03-23 23:43:26 +05:00

156 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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