### Деплой Автор: Сергей Антропов, сайт: 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`