78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# Эксплуатация
|
||
|
||
## Ротация credential
|
||
|
||
Интерактивно:
|
||
|
||
```bash
|
||
sudo vpn-egressctl import --stdin
|
||
```
|
||
|
||
Из защищённого файла:
|
||
|
||
```bash
|
||
sudo vpn-egressctl import --file /run/credentials/new-hysteria2.uri
|
||
```
|
||
|
||
Файл должен иметь режим `0600`. Не используйте positional argument, environment
|
||
variable, shell history или URL в тикете/логе.
|
||
|
||
## Изменение policy
|
||
|
||
```bash
|
||
install -m 0600 new-policy.json /etc/vpn-egress/policy.json
|
||
vpn-egressctl check
|
||
vpn-egressctl diff
|
||
vpn-egressctl sync
|
||
```
|
||
|
||
Path unit следит только за URI. Policy применяется явным `sync`, чтобы случайное
|
||
редактирование инфраструктурных параметров не вызвало неожиданный restart.
|
||
|
||
## Состояние
|
||
|
||
```bash
|
||
vpn-egressctl status
|
||
vpn-egressctl status --json
|
||
```
|
||
|
||
State содержит только hashes, endpoint без auth, версию, время и результат.
|
||
|
||
## Rollback
|
||
|
||
```bash
|
||
vpn-egressctl rollback
|
||
```
|
||
|
||
Команда проверяет last-good реальным sing-box, атомарно меняет конфиги местами,
|
||
перезапускает сервис и выполняет тот же healthcheck. Повторный rollback возвращает
|
||
конфигурацию, которая была активна до первого rollback.
|
||
|
||
После ручного rollback desired URI остаётся прежним. `status` показывает
|
||
`status=rolled_back`, а `doctor` сообщает `config-drift`, потому что production
|
||
config отличается от заново отрендеренного desired state. Перед новым `sync`
|
||
нужно либо исправить URI, либо осознанно вернуть desired state.
|
||
|
||
## Реакция systemd.path
|
||
|
||
`PathChanged` запускает oneshot `vpn-egress-sync.service`. Одновременный ручной
|
||
import сериализуется lock-файлом. Если новый URI некорректен, production config
|
||
не меняется, а unit завершается с ошибкой, видимой в journal.
|
||
|
||
```bash
|
||
journalctl -u vpn-egress-sync.service -n 100 --no-pager
|
||
systemctl reset-failed vpn-egress-sync.service
|
||
```
|
||
|
||
## Плановое обновление
|
||
|
||
Обновление policy или пакета внутри 1.13.19:
|
||
|
||
1. `vpn-egressctl check`;
|
||
2. `vpn-egressctl diff`;
|
||
3. backup артефакта пакета;
|
||
4. обновление;
|
||
5. `vpn-egressctl sync`;
|
||
6. `vpn-egressctl doctor`;
|
||
7. контролируемый rollback-тест на staging.
|