156 lines
7.4 KiB
Markdown
156 lines
7.4 KiB
Markdown
# 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)* |