Обновить README.md

This commit is contained in:
zailon 2026-04-14 15:24:17 +05:00
parent a2b96b5e2d
commit 7b518315de

View File

@ -3,22 +3,57 @@
Данный проект содержит Ansible playbook для автоматизированного развертывания и настройки серверной инфраструктуры, включая базовую настройку контейнеров, установку Docker и развертывание различных сервисов. Данный проект содержит Ansible playbook для автоматизированного развертывания и настройки серверной инфраструктуры, включая базовую настройку контейнеров, установку Docker и развертывание различных сервисов.
## 🏗️ Структура проекта ## 🏗️ Структура проекта
/opt/servers/Olimp/ ```mermaid
├── olimp-deploy.yml # Основной плейбук flowchart TD
├── inventories/ subgraph Gitea["🗄️ Gitea (192.168.1.214:3001)"]
│ └── hosts # Файл инвентаризации G[Репозиторий: zailon/olimp]
├── group_vars/ end
│ └── all.yml # Общие переменные для всех хостов
├── roles/
│ ├── base_setup/ # Базовая настройка хостов
│ ├── docker/ # Установка Docker и Docker Compose
│ ├── npm/ # Nginx Proxy Manager
│ ├── heimdall/ # Heimdall - дашборд приложений
│ ├── mealie/ # Mealie - менеджер рецептов
│ └── bookstack/ # Bookstack - система документации
└── README.md
text subgraph AnsibleHost["🖥️ Ansible Host (192.168.1.210)"]
direction TB
A[/opt/servers/Olimp/]
A --> P[olimp-deploy.yml]
A --> I[inventories/hosts]
A --> V[group_vars/all.yml]
A --> R[roles/]
R --> R1[base_setup/]
R --> R2[docker/]
R --> R3[npm/]
R --> R4[heimdall/]
R --> R5[mealie/]
R --> R6[bookstack/]
A --> M[README.md]
end
subgraph Targets["🎯 Целевые хосты"]
T1[gateway:201]
T2[media:203]
T3[photo:204]
T4[talk:206]
T5[Прочие LXC/VM]
end
G -->|git pull via SSH<br/>port 2221| AnsibleHost
P -->|ansible-playbook -i inventories/hosts| Targets
R1 --> T1 & T2 & T3 & T4 & T5
R2 --> T1 & T2 & T3 & T4 & T5
R3 --> T1
R4 --> T1
R5 --> T3
R6 --> T4
classDef gitea fill:#e1f5fe,stroke:#01579b,stroke-width:2px
classDef ansible fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef target fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
class G gitea
class A,P,I,V,R,R1,R2,R3,R4,R5,R6,M ansible
class T1,T2,T3,T4,T5 target
```
## 🎯 Инвентаризация ## 🎯 Инвентаризация
@ -27,6 +62,7 @@ text
[infra] [infra]
gateway ansible_host=192.168.1.221 int_ip=192.168.1.221 gateway ansible_host=192.168.1.221 int_ip=192.168.1.221
data ansible_host=192.168.1.222 int_ip=192.168.1.222 data ansible_host=192.168.1.222 int_ip=192.168.1.222
```
📋 Предварительные требования 📋 Предварительные требования
Целевые хосты должны быть доступны по SSH Целевые хосты должны быть доступны по SSH
@ -37,11 +73,12 @@ Python установлен на целевых хостах
Права sudo для пользователя, выполняющего развертывание Права sudo для пользователя, выполняющего развертывание
📦 Установка зависимостей 📦 Установка зависимостей
bash ```bash
# Установка необходимых коллекций Ansible # Установка необходимых коллекций Ansible
ansible-galaxy collection install community.docker ansible-galaxy collection install community.docker
```
🚀 Основной плейбук: olimp-deploy.yml 🚀 Основной плейбук: olimp-deploy.yml
yaml ```yaml
--- ---
- hosts: all - hosts: all
roles: roles:
@ -58,12 +95,14 @@ yaml
- { role: docker, tags: deploy_docker } - { role: docker, tags: deploy_docker }
- { role: mealie, tags: deploy_mealie } - { role: mealie, tags: deploy_mealie }
- { role: bookstack, tags: deploy_bookstack } - { role: bookstack, tags: deploy_bookstack }
```
🎮 Запуск плейбука 🎮 Запуск плейбука
Полное развертывание Полное развертывание
bash ```bash
ansible-playbook -i inventories/hosts olimp-deploy.yml ansible-playbook -i inventories/hosts olimp-deploy.yml
```
Выборочное развертывание по тегам Выборочное развертывание по тегам
bash ```bash
# Базовая настройка всех хостов # Базовая настройка всех хостов
ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_base ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_base
@ -75,6 +114,7 @@ ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_mealie --li
ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_bookstack --limit data ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_bookstack --limit data
ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_npm --limit gateway ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_npm --limit gateway
ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_heimdall --limit gateway ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_heimdall --limit gateway
```
🔧 Детальное описание ролей 🔧 Детальное описание ролей
Роль: base_setup Роль: base_setup
Тег: deploy_base Тег: deploy_base
@ -211,7 +251,7 @@ Web-интерфейс: http://data_ip:45131
⚙️ Переменные конфигурации ⚙️ Переменные конфигурации
Файл group_vars/all.yml содержит все общие переменные: Файл group_vars/all.yml содержит все общие переменные:
yaml ```yaml
# Общие настройки для всех хостов # Общие настройки для всех хостов
timezone: Asia/Yekaterinburg timezone: Asia/Yekaterinburg
system_locale: ru_RU.UTF-8 system_locale: ru_RU.UTF-8
@ -258,6 +298,7 @@ bookstack_db_dir: "/mnt/bookstack/db"
bookstack_port: "45131" bookstack_port: "45131"
bookstack_db_password: "secure_password_123" bookstack_db_password: "secure_password_123"
bookstack_db_root_password: "secure_root_password_123" bookstack_db_root_password: "secure_root_password_123"
```
🏛️ Архитектура решения 🏛️ Архитектура решения
Хост Gateway (192.168.1.221) Хост Gateway (192.168.1.221)
Nginx Proxy Manager - порты 80, 443, 81 Nginx Proxy Manager - порты 80, 443, 81
@ -279,14 +320,15 @@ Bookstack - порт 45131
📊 Мониторинг и логи 📊 Мониторинг и логи
Проверка статуса сервисов Проверка статуса сервисов
bash ```bash
# На хосте gateway # На хосте gateway
docker ps --filter name=npm --filter name=heimdall docker ps --filter name=npm --filter name=heimdall
# На хосте data # На хосте data
docker ps --filter name=mealie --filter name=bookstack docker ps --filter name=mealie --filter name=bookstack
```
Просмотр логов Просмотр логов
bash ```bash
# Просмотр логов конкретного сервиса # Просмотр логов конкретного сервиса
docker logs mealie -f --tail 50 docker logs mealie -f --tail 50
docker logs bookstack-mnemo -f --tail 50 docker logs bookstack-mnemo -f --tail 50
@ -294,6 +336,7 @@ docker logs bookstack-mnemo -f --tail 50
# Просмотр логов через docker compose # Просмотр логов через docker compose
cd /mnt/mealie && docker compose logs cd /mnt/mealie && docker compose logs
cd /mnt/bookstack && docker compose logs cd /mnt/bookstack && docker compose logs
```
💾 Резервное копирование 💾 Резервное копирование
Данные всех сервисов сохраняются в смонтированных директориях: Данные всех сервисов сохраняются в смонтированных директориях:
@ -303,12 +346,13 @@ Bookstack: /mnt/bookstack/config, /mnt/bookstack/uploads, /mnt/bookstack/db
Для резервного копирования достаточно архивировать эти директории. Для резервного копирования достаточно архивировать эти директории.
bash ```bash
# Пример резервного копирования # Пример резервного копирования
tar -czf mealie_backup_$(date +%Y%m%d).tar.gz /mnt/mealie/data tar -czf mealie_backup_$(date +%Y%m%d).tar.gz /mnt/mealie/data
tar -czf bookstack_backup_$(date +%Y%m%d).tar.gz /mnt/bookstack tar -czf bookstack_backup_$(date +%Y%m%d).tar.gz /mnt/bookstack
```
🔄 Обновление сервисов 🔄 Обновление сервисов
bash ```bash
# Обновление всех сервисов на хосте # Обновление всех сервисов на хосте
cd /path/to/service cd /path/to/service
docker compose pull docker compose pull
@ -316,9 +360,10 @@ docker compose up -d
# Или через Ansible # Или через Ansible
ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_mealie,deploy_bookstack --limit data ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_mealie,deploy_bookstack --limit data
```
🛠️ Устранение неисправностей 🛠️ Устранение неисправностей
Проверка подключения Проверка подключения
bash ```bash
ansible -i inventories/hosts all -m ping ansible -i inventories/hosts all -m ping
Проверка синтаксиса плейбука Проверка синтаксиса плейбука
bash bash
@ -329,6 +374,7 @@ ansible-playbook -i inventories/hosts olimp-deploy.yml --tags deploy_mealie -vvv
Проверка переменных Проверка переменных
bash bash
ansible -i inventories/hosts all -m debug -a "var=hostvars[inventory_hostname]" ansible -i inventories/hosts all -m debug -a "var=hostvars[inventory_hostname]"
```
🔒 Безопасность 🔒 Безопасность
Все пароли и чувствительные данные должны храниться в зашифрованном виде с помощью Ansible Vault Все пароли и чувствительные данные должны храниться в зашифрованном виде с помощью Ansible Vault
@ -336,9 +382,10 @@ ansible -i inventories/hosts all -m debug -a "var=hostvars[inventory_hostname]"
Настройте брандмауэр для ограничения доступа к портам Настройте брандмауэр для ограничения доступа к портам
bash ```bash
# Использование Ansible Vault для шифрования секретов # Использование Ansible Vault для шифрования секретов
ansible-vault encrypt group_vars/secrets.yml ansible-vault encrypt group_vars/secrets.yml
```
🚀 Дополнительные возможности 🚀 Дополнительные возможности
Проект может быть расширен добавлением новых ролей для: Проект может быть расширен добавлением новых ролей для: