### Деплой Автор: Сергей Антропов, сайт: https://devops.org.ru Варианты развертывания: - Docker Compose: файл `docker-compose.yml` - Systemd сервис: через raw-роль `runner/deploy-service-raw` (юнит находится в `runner/sensusagent.service` при необходимости) - Ansible-плейбуки (без Python на целевом хосте): `runner/deploy-raw`, `runner/delete-raw`, а также service-варианты `*-raw` Подготовка удаленного хоста: - Доступ по 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 (raw): ```bash make deploy-service ``` Остановка и очистка systemd-варианта (raw): ```bash make delete-service ``` Прямое использование 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` определяет целевые хосты и параметры подключения