fix(ansible): always enable launch tasks + validate window bucket
This commit is contained in:
+6
-1
@@ -105,7 +105,9 @@ Playbook:
|
|||||||
- если найден legacy config `C:\ProgramData\ActivityWatch-Phase2\deployment-config.json`, выполняет безопасную миграцию через `migrate-awatch-rus-paths.ps1`: backup, остановка задач, перенос данных, переписывание путей, пересоздание scheduled tasks и validation;
|
- если найден 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-ensemble.ps1` (deploy + hardening/recovery) с policy/rules из AWatch-rus toolkit;
|
||||||
- после deploy принудительно запускает `ActivityWatch Recovery` и все `ActivityWatch Launch *` задачи;
|
- после deploy принудительно запускает `ActivityWatch Recovery` и все `ActivityWatch Launch *` задачи;
|
||||||
- выполняет API smoke-check bucket `aw-watcher-afk_<COMPUTERNAME>` и ожидает свежие `not-afk` события;
|
- включает (`Enable-ScheduledTask`) `ActivityWatch Recovery` и все `ActivityWatch Launch *` задачи перед запуском (иначе WebUI может показывать `Active time: 0s`);
|
||||||
|
- выполняет API smoke-check bucket `aw-watcher-afk_<COMPUTERNAME>` и ожидает свежие события;
|
||||||
|
- выполняет API smoke-check bucket `aw-watcher-window_<COMPUTERNAME>` и ожидает свежие события (по умолчанию включено);
|
||||||
- запускает `validate-deployment.ps1`;
|
- запускает `validate-deployment.ps1`;
|
||||||
- забирает JSON-отчёт в локальную директорию (`/tmp/aw-rus-validation` по умолчанию).
|
- забирает JSON-отчёт в локальную директорию (`/tmp/aw-rus-validation` по умолчанию).
|
||||||
|
|
||||||
@@ -125,6 +127,9 @@ Playbook:
|
|||||||
- `aw_windows_migration_report_remote_path` — JSON-отчёт о миграции на Windows-хосте;
|
- `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_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_api_smoke_check_bucket: ""` — автоматически использовать `aw-watcher-afk_<COMPUTERNAME>`;
|
||||||
|
- `aw_windows_api_smoke_check_window_enabled: true` — включить дополнительный smoke-check `aw-watcher-window_<COMPUTERNAME>`;
|
||||||
|
- `aw_windows_api_smoke_check_window_bucket: ""` — переопределить bucket для window smoke-check;
|
||||||
|
- `aw_windows_api_smoke_check_min_events: 1` — минимум событий, ожидаемых в smoke-check;
|
||||||
- `aw_windows_fail_on_validation_error: true` — завершать playbook ошибкой, если `validate-deployment.ps1` возвращает `overallOk=false`;
|
- `aw_windows_fail_on_validation_error: true` — завершать playbook ошибкой, если `validate-deployment.ps1` возвращает `overallOk=false`;
|
||||||
- `aw_windows_skip_hardening: true` — пропустить `hardening-recovery.ps1` внутри ensemble-скрипта.
|
- `aw_windows_skip_hardening: true` — пропустить `hardening-recovery.ps1` внутри ensemble-скрипта.
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,9 @@
|
|||||||
aw_windows_api_smoke_check_enabled: true
|
aw_windows_api_smoke_check_enabled: true
|
||||||
aw_windows_api_smoke_check_bucket: ""
|
aw_windows_api_smoke_check_bucket: ""
|
||||||
aw_windows_api_smoke_check_limit: 10
|
aw_windows_api_smoke_check_limit: 10
|
||||||
|
aw_windows_api_smoke_check_window_enabled: true
|
||||||
|
aw_windows_api_smoke_check_window_bucket: ""
|
||||||
|
aw_windows_api_smoke_check_min_events: 1
|
||||||
aw_windows_fail_on_validation_error: true
|
aw_windows_fail_on_validation_error: true
|
||||||
aw_windows_migration_enabled: true
|
aw_windows_migration_enabled: true
|
||||||
aw_windows_legacy_install_root: "C:\\Program Files\\ActivityWatch-Phase2"
|
aw_windows_legacy_install_root: "C:\\Program Files\\ActivityWatch-Phase2"
|
||||||
@@ -224,6 +227,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
Start-Sleep -Seconds 2
|
Start-Sleep -Seconds 2
|
||||||
|
|
||||||
|
# Ensure tasks are enabled (some environments keep them disabled, causing "0s" in WebUI).
|
||||||
|
try {
|
||||||
|
Enable-ScheduledTask -TaskName "{{ aw_windows_recovery_task_name }}" -ErrorAction SilentlyContinue | Out-Null
|
||||||
|
} catch {}
|
||||||
|
Get-ScheduledTask |
|
||||||
|
Where-Object TaskName -like "{{ aw_windows_launch_task_pattern }}" |
|
||||||
|
ForEach-Object {
|
||||||
|
try { Enable-ScheduledTask -TaskName $_.TaskName -ErrorAction SilentlyContinue | Out-Null } catch {}
|
||||||
|
}
|
||||||
|
|
||||||
Start-ScheduledTask -TaskName "{{ aw_windows_recovery_task_name }}"
|
Start-ScheduledTask -TaskName "{{ aw_windows_recovery_task_name }}"
|
||||||
Get-ScheduledTask |
|
Get-ScheduledTask |
|
||||||
Where-Object TaskName -like "{{ aw_windows_launch_task_pattern }}" |
|
Where-Object TaskName -like "{{ aw_windows_launch_task_pattern }}" |
|
||||||
@@ -232,7 +246,6 @@
|
|||||||
- name: Получить Windows hostname для AW smoke-check bucket
|
- name: Получить Windows hostname для AW smoke-check bucket
|
||||||
when:
|
when:
|
||||||
- aw_windows_api_smoke_check_enabled | bool
|
- aw_windows_api_smoke_check_enabled | bool
|
||||||
- aw_windows_afk_enabled | bool
|
|
||||||
ansible.windows.win_command: powershell.exe -NoProfile -Command "$env:COMPUTERNAME"
|
ansible.windows.win_command: powershell.exe -NoProfile -Command "$env:COMPUTERNAME"
|
||||||
register: aw_windows_hostname_result
|
register: aw_windows_hostname_result
|
||||||
changed_when: false
|
changed_when: false
|
||||||
@@ -250,7 +263,21 @@
|
|||||||
else 'aw-watcher-afk_' ~ (aw_windows_hostname_result.stdout | trim)
|
else 'aw-watcher-afk_' ~ (aw_windows_hostname_result.stdout | trim)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
- name: Выполнить AW API smoke-check (проверка наличия свежих событий в AFK бакете)
|
- name: Вычислить AW Window smoke-check bucket
|
||||||
|
when:
|
||||||
|
- aw_windows_api_smoke_check_enabled | bool
|
||||||
|
- aw_windows_api_smoke_check_window_enabled | bool
|
||||||
|
- aw_windows_window_enabled | bool
|
||||||
|
- aw_windows_hostname_result.stdout is defined
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
aw_windows_api_smoke_check_window_bucket_effective: >-
|
||||||
|
{{
|
||||||
|
aw_windows_api_smoke_check_window_bucket
|
||||||
|
if (aw_windows_api_smoke_check_window_bucket | default('') | string | length) > 0
|
||||||
|
else 'aw-watcher-window_' ~ (aw_windows_hostname_result.stdout | trim)
|
||||||
|
}}
|
||||||
|
|
||||||
|
- name: Выполнить AW API smoke-check (AFK bucket должен получать события)
|
||||||
when:
|
when:
|
||||||
- aw_windows_api_smoke_check_enabled | bool
|
- aw_windows_api_smoke_check_enabled | bool
|
||||||
- aw_windows_afk_enabled | bool
|
- aw_windows_afk_enabled | bool
|
||||||
@@ -259,10 +286,25 @@
|
|||||||
method: GET
|
method: GET
|
||||||
status_code: 200
|
status_code: 200
|
||||||
register: aw_windows_api_smoke_result
|
register: aw_windows_api_smoke_result
|
||||||
until: aw_windows_api_smoke_result.json | length > 0
|
until: (aw_windows_api_smoke_result.json | length) >= aw_windows_api_smoke_check_min_events
|
||||||
retries: 5
|
retries: 12
|
||||||
delay: 5
|
delay: 5
|
||||||
ignore_errors: true
|
ignore_errors: "{{ (not aw_windows_fail_on_validation_error | bool) }}"
|
||||||
|
|
||||||
|
- name: Выполнить AW API smoke-check (Window bucket должен получать события)
|
||||||
|
when:
|
||||||
|
- aw_windows_api_smoke_check_enabled | bool
|
||||||
|
- aw_windows_api_smoke_check_window_enabled | bool
|
||||||
|
- aw_windows_window_enabled | bool
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "{{ aw_windows_server_scheme }}://{{ aw_windows_server_host }}:{{ aw_windows_server_port }}/api/0/buckets/{{ aw_windows_api_smoke_check_window_bucket_effective }}/events?limit={{ aw_windows_api_smoke_check_limit }}"
|
||||||
|
method: GET
|
||||||
|
status_code: 200
|
||||||
|
register: aw_windows_api_smoke_window_result
|
||||||
|
until: (aw_windows_api_smoke_window_result.json | length) >= aw_windows_api_smoke_check_min_events
|
||||||
|
retries: 12
|
||||||
|
delay: 5
|
||||||
|
ignore_errors: "{{ (not aw_windows_fail_on_validation_error | bool) }}"
|
||||||
|
|
||||||
- name: Валидировать развёртывание на эндпоинте
|
- name: Валидировать развёртывание на эндпоинте
|
||||||
ansible.windows.win_powershell:
|
ansible.windows.win_powershell:
|
||||||
|
|||||||
Reference in New Issue
Block a user