Довёл fix20: firewall-mode, staged state, diagnostics, readiness и build-gate
This commit is contained in:
@@ -62,20 +62,22 @@ IPv4-only policy:
|
||||
|
||||
## Firewall modes
|
||||
|
||||
`HY2XS_FIREWALL_ENABLED=true`:
|
||||
`HY2XS_FIREWALL_MODE=managed`:
|
||||
- orchestrator управляет baseline nftables.
|
||||
- существующий `foreign` entrypoint блокирует install/reconfigure (fail-fast).
|
||||
|
||||
`HY2XS_FIREWALL_ALLOW_TAKEOVER=false`:
|
||||
- safe default.
|
||||
- существующий не-HY2XS `/etc/nftables.conf` блокирует install/reconfigure (fail-fast).
|
||||
|
||||
`HY2XS_FIREWALL_ALLOW_TAKEOVER=true`:
|
||||
`HY2XS_FIREWALL_MODE=takeover`:
|
||||
- явный destructive takeover.
|
||||
- использовать только после ручной проверки хоста.
|
||||
|
||||
`HY2XS_FIREWALL_ENABLED=false` или `--skip-firewall`:
|
||||
`HY2XS_FIREWALL_MODE=external`:
|
||||
- orchestrator не модифицирует nftables.
|
||||
- оператор полностью управляет firewall вручную.
|
||||
|
||||
`HY2XS_FIREWALL_MODE=off`:
|
||||
- firewall-слой оркестратора отключён.
|
||||
- `--skip-firewall` эквивалентно runtime-отключению на время операции.
|
||||
|
||||
После staged-проверки можно включать default policy `drop`.
|
||||
|
||||
## Порядок применения
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
- `PUBLIC_HOST`
|
||||
- `PUBLIC_PORT`
|
||||
- `SSH_PORT`
|
||||
- `HY2XS_FIREWALL_ENABLED`
|
||||
- `HY2XS_FIREWALL_MODE`
|
||||
- `HY2XS_FIREWALL_STAGED_APPLY`
|
||||
- `HY2XS_ADMIN_USER`
|
||||
- `HY2XS_FORCE_PASSWORD_CHANGE`
|
||||
|
||||
@@ -69,6 +69,37 @@
|
||||
9. попытка использовать `HY2XS_IPV6_ENABLED=true`
|
||||
10. `HY2XS_PUBLIC_HOST=0.0.0.0`
|
||||
|
||||
## E. Fix20 production matrix (обязательные сценарии)
|
||||
|
||||
1. **Clean Debian 13 minimal**:
|
||||
- только SSH, без ручной установки зависимостей;
|
||||
- default `/etc/nftables.conf` stub;
|
||||
- install проходит полностью;
|
||||
- `doctor`/`status` показывают рабочее состояние.
|
||||
|
||||
2. **Non-systemd container**:
|
||||
- fail-fast до destructive шагов;
|
||||
- диагностическое сообщение с причиной capability/systemd.
|
||||
|
||||
3. **Foreign nftables**:
|
||||
- при `HY2XS_FIREWALL_MODE=managed` install/reconfigure блокируются;
|
||||
- при `HY2XS_FIREWALL_MODE=takeover` создаются backup/rollback guard и apply проходит.
|
||||
|
||||
4. **Rollback guard cleanup**:
|
||||
- после успешного apply/smoke не остаются `hy2xs-fw-rollback-*.timer/.service`.
|
||||
|
||||
5. **Partial install + repair**:
|
||||
- состояние `install-state` фиксирует промежуточную фазу;
|
||||
- `repair` завершает граф до `installed=true`.
|
||||
|
||||
6. **AAAA при IPv4-only**:
|
||||
- policy строго валидируется preflight;
|
||||
- soft warning path не используется в production baseline.
|
||||
|
||||
7. **Slow-start admin readiness**:
|
||||
- install не падает на race после restart;
|
||||
- readiness waiters дожидаются listener/healthz.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
Система принимается, если:
|
||||
@@ -86,3 +117,5 @@
|
||||
11. UI не запускается от root
|
||||
12. клиентские endpoint не зависят от request `Host`/`hostname`
|
||||
13. production build verify падает, если `config/hy2xs.env` содержит placeholder-значения
|
||||
14. production build verify падает при dirty git tree (кроме `ALLOW_DIRTY_BUILD=true`)
|
||||
15. metadata содержит `source_git_commit`, `dirty_tree`, `build_profile=production`
|
||||
|
||||
Reference in New Issue
Block a user