mirror of
https://github.com/oqyude/nixos.git
synced 2026-10-10 05:55:24 +03:00
sops secrets path changed
This commit is contained in:
+51
-1
@@ -42,6 +42,7 @@
|
||||
| 4 | `100.64.0.0` = Tailscale sapphira | Назначен вручную; в 4 файлах | AGENTS.md §5 |
|
||||
| 5 | 3x-ui заморожен | Панель на latest; ядро Xray на 26.7.x; миграция 26.9 провалена | todo C1–C5 |
|
||||
| 6 | nftables на VDS — явная финальная политика | Сейчас ruleset без финального правила + конфликт с `firewall.*` | todo A3 |
|
||||
| 7 | sops-пути — через `config.sops.secrets.<name>.path` | Любой `path =` override на sops-блоке делает хардкод-потребителя молча сломанным: rebuild зелёный, сервис стартует, контент пустой | этот коммит, см. §S1 |
|
||||
|
||||
## Сводка по ловушкам
|
||||
|
||||
@@ -192,4 +193,53 @@ git-истории файла (последний коммит, где Q&A бы
|
||||
6. каждый `listen.addr` — реально назначенный адрес, а не сеть;
|
||||
7. все файлы в `secrets/` матчат `path_regex` из `.sops.yaml`.
|
||||
|
||||
**Вопрос:** какие из этих проверок ты хочешь, а какие — лишний CI?
|
||||
**Вопрос:** какие из этих проверок ты хочешь, а какие — лишний CI?
|
||||
|
||||
---
|
||||
|
||||
## Шаблон инварианта
|
||||
|
||||
Этот шаблон — для добавления новых инвариантов в этот документ
|
||||
(и для зеркалирования в `AGENTS.md`). Та же 4-осевая структура
|
||||
используется, чтобы вытащить «невидимое знание владельца» из
|
||||
существующего кода в явное утверждение.
|
||||
|
||||
1. **Утверждение** — что именно верно и нельзя менять без осознанного
|
||||
решения. Один-два абзаца, никаких «может быть».
|
||||
2. **Где** — конкретные файлы и строки. Агент не должен угадывать.
|
||||
3. **Почему** — что происходит при нарушении. Лучше всего — сценарий
|
||||
(rebuild / рантайм), а не абстрактный риск.
|
||||
4. **Действие** — `todo X.Y`, ссылка на коммит, или явное
|
||||
«закреплено автоматической проверкой (см. §11.2)».
|
||||
|
||||
Дополнительные поля по необходимости: «ловушка» (выглядит сломанным,
|
||||
намеренно), «обратное» (где это уже было сломано раньше),
|
||||
«как проверить» (grep / CI).
|
||||
|
||||
### S1 — sops-пути: `config.sops.secrets.<name>.path`
|
||||
|
||||
- **Утверждение.** Любой потребитель sops-секрета в `modules/` ссылается
|
||||
на путь через `${config.sops.secrets.<attr>.path}`, а не через
|
||||
литерал `"/run/secrets/<attr>"`. Атрибут sops-блока — единственный
|
||||
источник истины для on-disk пути.
|
||||
- **Где.** `modules/server/authelia.nix:107-108`,
|
||||
`modules/containers/open-webui.nix:101`,
|
||||
`modules/containers/tape-rotation.nix:63` — потребители
|
||||
sops-материализации. Отдельный случай — композитный env-файл,
|
||||
**не** sops: `modules/containers/remnawave.nix:16, 70, 138, 145`
|
||||
— там `envFile` в `let`-биндинге, чтобы две копии пути не
|
||||
разъехались.
|
||||
- **Почему.** sops-nix материализует секреты на `/run/secrets/<attr>`
|
||||
по умолчанию, но `sops.secrets.<attr>.path` это переопределяет.
|
||||
Любой такой override в будущей правке делает хардкод-потребителя
|
||||
**молча** сломанным: `nixos-rebuild` проходит, сервис стартует,
|
||||
файл читается — но контент от прошлой версии или пустой. Симптом
|
||||
приходит из рантайма, не из CI. В `remnawave.nix` тот же риск
|
||||
был двойной: путь хардкожен и в генераторе, и в контейнере, и
|
||||
расхождение двух копий → silent breakage.
|
||||
- **Действие.** Закреплено в коммите этой правки. Автоматической
|
||||
проверки пока нет (см. §11.2 — список потенциальных CI-проверок).
|
||||
- **Обратное.** До правки: `authelia.nix:51,108,109` — через хелпер
|
||||
`sopsPath = name: "/run/secrets/${name}"`; `open-webui.nix:95`,
|
||||
`tape-rotation.nix:61`, `remnawave.nix:61, 129, 136` — литеральный
|
||||
хардкод.
|
||||
Reference in New Issue
Block a user