9.5 KiB
9.5 KiB
Ansible ensemble for AWatch-rus
Эта директория содержит Ansible-ensemble для полного развёртывания AWatch-rus:
- деплой на уже существующий Debian host/CT;
- полный цикл с нуля в Proxmox: создание CT + bootstrap + установка ActivityWatch + RU patch;
- централизованное развёртывание Windows/RDP collector'ов по WinRM;
- развёртывание внешнего pfSense poller'а на Debian/Ubuntu utility VM.
Файлы
ansible/deploy_aw_server.yml— основной playbook для уже существующего Debian/CT host.ansible/provision_proxmox_ct_and_deploy_aw.yml— полный playbook для Proxmox.ansible/provision_proxmox_ct_matrix_and_deploy_aw.yml— массовый полный playbook (несколько CT).ansible/deploy_aw_windows.yml— WinRM playbook для развёртывания Windows/RDP collector'ов.ansible/deploy_aw_pfsense_poller.yml— развёртывание pfSense poller'а.ansible/install_full_stack.yml— полный установочный playbook (оркестратор всех этапов).ansible/inventory.example.ini— шаблон inventory.ansible/group_vars/*.example.yml— шаблоны переменных.
Быстрый запуск
- Скопируйте шаблоны:
cp ansible/inventory.example.ini ansible/inventory.inicp ansible/group_vars/all.example.yml ansible/group_vars/all.yml
- Заполните значения в
inventory.iniиgroup_vars/all.yml. - Запустите:
cd ansible
ansible-playbook -i inventory.ini deploy_aw_server.yml
Секреты (пароли) безопасно
Рекомендуемый способ не хранить пароли в репозитории — перед запуском экспортировать их в переменные окружения:
- Linux
aw_server(SSH пароль root):AW_SSH_PASSWORD - Windows
aw_windows(WinRM пароль):AW_WINRM_PASSWORD
В group_vars/aw_server.yml и group_vars/windows.yml они читаются через lookup('env', ...).
Полный установочный playbook (всё за один запуск)
Если нужно прогнать полный цикл одной командой:
cd ansible
ansible-playbook -i inventory.ini install_full_stack.yml
Что делает:
provision_proxmox_ct_and_deploy_aw.yml(если есть хосты в группе[proxmox]);deploy_aw_server.yml(группа[aw_server]);deploy_aw_windows.yml(группа[aw_windows]);deploy_aw_pfsense_poller.yml(группа[aw_pfsense_pollers]).
Пустые группы в inventory.ini безопасны: соответствующий play будет пропущен.
Полный запуск с нуля в Proxmox
- Подготовьте inventory и vars:
cp ansible/inventory.example.ini ansible/inventory.inicp ansible/group_vars/all.example.yml ansible/group_vars/all.ymlcp ansible/group_vars/proxmox.example.yml ansible/group_vars/proxmox.yml
- Заполните
group_vars/proxmox.ymlиgroup_vars/all.yml. - Запустите playbook:
cd ansible
ansible-playbook -i inventory.ini provision_proxmox_ct_and_deploy_aw.yml
Массовый запуск (матрица CT)
- Подготовьте матрицу:
cp ansible/group_vars/proxmox-matrix.example.yml ansible/group_vars/proxmox-matrix.yml
- Заполните
proxmox-matrix.yml. - Запустите:
cd ansible
ansible-playbook -i inventory.ini provision_proxmox_ct_matrix_and_deploy_aw.yml
Windows/RDP rollout (WinRM)
- Подготовьте inventory и vars:
cp ansible/inventory.example.ini ansible/inventory.inicp ansible/group_vars/windows.example.yml ansible/group_vars/windows.yml
- Заполните
inventory.ini(секция[aw_windows]) иgroup_vars/windows.yml.- Для русской локализации Windows часто нужен
ansible_user=Администратор(а неAdministrator). - Если WinRM закрыт, playbook не сможет стартовать и нужно сначала открыть
5985/5986иwsman.
- Для русской локализации Windows часто нужен
- Запустите:
cd ansible
ansible-playbook -i inventory.ini deploy_aw_windows.yml
Playbook:
- выгружает полный
windows/*toolkit на целевой хост в InnoSetup-compatible каталогC:\Program Files\AWatch-rus\windows, включая DLP иworktime-session-collector.ps1; - если найден legacy config
C:\ProgramData\ActivityWatch-Phase2\deployment-config.json, выполняет безопасную миграцию черезmigrate-awatch-rus-paths.ps1: backup, остановка задач, перенос данных, переписывание путей, пересоздание scheduled tasks и validation; - выполняет
deploy-ensemble.ps1(deploy + hardening/recovery) с policy/rules из AWatch-rus toolkit; - после deploy принудительно запускает
ActivityWatch Recoveryи всеActivityWatch Launch *задачи; - выполняет API smoke-check bucket
aw-watcher-afk_<COMPUTERNAME>и ожидает свежиеnot-afkсобытия; - запускает
validate-deployment.ps1; - забирает JSON-отчёт в локальную директорию (
/tmp/aw-rus-validationпо умолчанию).
Дополнительные флаги:
aw_windows_afk_enabled: false— не запускатьaw-watcher-afk;aw_windows_window_enabled: false— не запускатьaw-watcher-window;aw_windows_incident_capture_enabled: false— отключить блок incidentCapture;aw_windows_incident_screenshot_enabled: false— не делать скриншот при DLP-инциденте;aw_windows_incident_artifacts_root: 'C:\...\incident-artifacts'— переопределить путь артефактов;aw_windows_deploy_root: 'C:\Program Files\AWatch-rus'— каталог toolkit, совпадает с InnoSetup{app};aw_windows_install_root: 'C:\Program Files\AWatch-rus\bin'— каталог бинарников, совпадает с InnoSetupAwDefaultInstallRoot;aw_windows_state_root: 'C:\ProgramData\AWatch-rus'— каталог состояния/отчётов, совпадает с InnoSetupAwDefaultStateRoot;aw_windows_validation_remote_path: '{{ aw_windows_state_root }}\aw_validate_ansible.json'— отчёт Ansible-валидации хранится рядом сensemble-report-*.json;aw_windows_migration_enabled: true— включить guard миграции текущего production изActivityWatch-Phase2в единыйAWatch-rus;aw_windows_legacy_install_root/aw_windows_legacy_state_root— старые production paths, откуда выполняется перенос;aw_windows_migration_report_remote_path— JSON-отчёт о миграции на Windows-хосте;aw_windows_package_version,aw_windows_package_url,aw_windows_package_zip_path— версия и источник Windows-пакета ActivityWatch;aw_windows_api_smoke_check_bucket: ""— автоматически использоватьaw-watcher-afk_<COMPUTERNAME>;aw_windows_fail_on_validation_error: true— завершать playbook ошибкой, еслиvalidate-deployment.ps1возвращаетoverallOk=false;aw_windows_skip_hardening: true— пропуститьhardening-recovery.ps1внутри ensemble-скрипта.
Развёртывание pfSense poller
- Подготовьте vars:
cp ansible/group_vars/pfsense-poller.example.yml ansible/group_vars/pfsense-poller.yml
- Добавьте inventory group
[aw_pfsense_pollers]. - Запустите:
cd ansible
ansible-playbook -i inventory.ini deploy_aw_pfsense_poller.yml
Playbook:
- ставит
python3; - копирует
pfsense-aw-poller.py; - пишет
/etc/aw-pfsense/poller.json; - поднимает
aw-pfsense-poller.service.
Результат
- Установлен ActivityWatch Server.
- Создан systemd-unit
activitywatch-server.service. - Установлен RU Web UI patch.
- Для Web UI используется checksum-based cache-bust для
ru-patch-v5.jsиsw-cleanup.js, чтобы браузер не держал старую DLP/русскую статику после деплоя. - На
#/homeWeb UI делит хосты наWindows RDPиVirtual servers + Proxmox. - Выполнена валидация API
http://127.0.0.1:5600/api/0/info. - Для полного сценария CT создаётся автоматически через
pct create. - На Windows/RDP host развёрнуты AFK/window watchers, browser domain collector, DLP endpoint collector и worktime session collector.
- Проверочный JSON-отчёт Windows playbook должен иметь
overallOk=true.
Prod rollout одной командой
Для ручного запуска с dry-run и логированием используйте:
bash scripts/prod_rollout.sh
Скрипт попросит AW_SSH_PASSWORD и AW_WINRM_PASSWORD интерактивно (ввод скрыт) и сложит логи в .rollout-logs/.