- `inv pl` идёт с `--diff`, и 14 задач в 12 плейбуках печатают отрендеренные секреты в терминал; `no_log` есть только в `roles/secrets`. Инвентарь, рычаги (`no_log`, `diff: false`, вынос в отдельный файл) и порядок — в задаче. - Актуализирована `secrets-env-to-file`: список приложений сверен с шаблонами (tuwunel чистый, у gitea только SMTP), добавлен мотив с диффом.
2.5 KiB
Секреты приложений через *_FILE, а не inline environment:
Приоритет: средний
miniflux сделан правильно — роль secrets кладёт каждую переменную vault в
отдельный файл, каталог монтируется :ro, а compose ссылается на *_FILE
(files/miniflux/docker-compose.template.yml). Остальные держат секреты прямыми
значениями в environment::
- outline — пароль postgres,
SECRET_KEY,UTILS_SECRET, секрет OIDC, SMTP - tududi — session secret, секрет OIDC, ключ LLM, SMTP
- wakapi — salt паролей, секрет OIDC, SMTP
- wanderer — мастер-ключ meilisearch, ключ шифрования pocketbase
- gramps —
gramps_secret_key, SMTP - gitea — только SMTP (
postbox_pass)
tuwunel из списка убран: в его compose секретов нет (сверено 2026-07-25). memos и calibre тоже чистые.
Такие переменные читает любой член группы docker, любой процесс с доступом к
/proc/<pid>/environ, и они попадают в docker inspect. Где приложение умеет
*_FILE или конфиг-файл — постепенно перевести по образцу miniflux.
Второй мотив, найденный позже: пока секрет стоит прямым значением в шаблоне,
ansible-playbook --diff печатает его в терминал при каждом изменении файла.
Вынос в отдельный файл чинит это структурно — дифф compose остаётся читаемым, а
секретный файл рендерит роль secrets под no_log. Но покрывает только
environment:; конфиги (authelia, bifrost, backups, remembos) и общий запрет на
вывод — в no-secrets-in-playbook-output, и
она идёт первой: там дёшево и закрывает всё сразу.
Из sec-ревью (fable, 2026-07-13). Связка с service-users-docker-group.
Связано: files/outline, files/wakapi, files/tududi, files/wanderer, files/gramps, files/gitea, files/miniflux (образец), roles/secrets.