SensusAgent/docs/deploy.md
Sergey Antropoff d1da51d875 docs: обновлена документация проекта
- Удален тестовый скрипт runner/test-config-generation.sh
- Обновлен docs/overview.md:
  - Добавлена информация о гибкой конфигурации коллекторов
  - Добавлена информация о командах обновления
  - Обновлено описание структуры runner/
  - Добавлена ссылка на docs/ansible_groups.md

- Обновлен docs/deploy.md:
  - Убраны ссылки на устаревшие -raw папки
  - Добавлена информация о командах обновления
  - Добавлен раздел о гибкой конфигурации коллекторов
  - Добавлены примеры развертывания на конкретных группах

- Исправлен порядок команд в Makefile (перенесены в правильное место)

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-09-15 14:58:41 +03:00

115 lines
4.3 KiB
Markdown
Raw 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.

### Деплой
Автор: Сергей Антропов, сайт: https://devops.org.ru
Варианты развертывания:
- Docker Compose: файл `docker-compose.yml`
- Systemd сервис: через роль `runner/deploy-service` (юнит находится в `runner/sensusagent.service` при необходимости)
- Ansible-плейбуки (без Python на целевом хосте): `runner/deploy`, `runner/delete`, а также service-варианты
- Гибкая конфигурация коллекторов через Ansible группы
Подготовка удаленного хоста:
- Доступ по SSH (ключ находится у оператора)
- Права `sudo` для установки зависимостей
Быстрый деплой (одноразовый запуск агента без systemd, raw):
```bash
make deploy
```
Что делает команда:
- Собирает linux-бинарь агента и коллектора в Docker
- Копирует `bin/agent/agent`, `bin/agent/config.yaml`, `bin/agent/collectors/*` на удаленный хост в `/opt/sensusagent`
- Обеспечивает зависимости (например, `sysstat`, `smartmontools` и др.)
Удаление установленного агента (без systemd):
```bash
make delete
```
Деплой и запуск через systemd:
```bash
make deploy-service
```
Остановка и очистка systemd-варианта:
```bash
make delete-service
```
Обновление агента:
```bash
# Обновление systemd-сервиса (рекомендуется)
make update-service
# Обновление агента без systemd
make update
```
Прямое использование systemd юнита:
Разместите юнит-файл по пути `/etc/systemd/system/sensusagent.service` со следующим содержимым:
```ini
[Unit]
Description=SensusAgent metrics collector
After=network.target
[Service]
Type=simple
Environment=CONFIG_PATH=/opt/sensusagent/config.yaml
ExecStart=/opt/sensusagent/agent --mode stdout
Restart=on-failure
RestartSec=3
User=nobody
Group=nogroup
[Install]
WantedBy=multi-user.target
```
Команды управления:
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now sensusagent
sudo systemctl status sensusagent
sudo journalctl -u sensusagent -f
```
Права и директории:
- Бинарь и конфиг по умолчанию устанавливаются в `/opt/sensusagent`
- Убедитесь, что у пользователя сервиса есть права на чтение конфигов и исполнение бинарей
Переменные Ansible:
- `LOCAL_BIN_DIR` — локальный каталог с собранным агентом (по умолчанию `./bin/agent`)
- `remote_dir` — удаленный каталог установки (по умолчанию `/opt/sensusagent` в плейбуках)
Инвентори:
- Файл `runner/inventory.ini` определяет целевые хосты и параметры подключения
## Гибкая конфигурация коллекторов
Проект поддерживает гибкую настройку коллекторов через Ansible группы:
### Группы хостов:
- **`proxmox`** - Proxmox ноды (коллекторы: `proxcluster`, `proxnode`, `proxvms`, `uptime`)
- **`proxvms`** - VM/контейнеры Proxmox (коллекторы: `proxvmsystem`, `uptime`)
- **`standalone`** - автономные серверы (коллекторы: `system`, `hba`, `sensors`, `uptime`)
### Развертывание на конкретной группе:
```bash
# Только на Proxmox нодах
make deploy-service --limit proxmox
# Только на VM/контейнерах
make deploy-service --limit proxvms
# Только на автономных серверах
make deploy-service --limit standalone
```
### Конфигурация групп:
- Переменные групп: `runner/group_vars/`
- Шаблоны конфигурации: `runner/templates/`
- Автоматическая генерация `config.yaml` на основе группы
Подробнее см. `docs/ansible_groups.md`