Update file 09-ansible-playbooks.md

This commit is contained in:
Administrator 2026-03-23 23:43:26 +05:00
parent 55a700af40
commit f93f01da3a

View File

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