После того, как я пересоздал свой homelab-сервер с чистого листа, я решил попробовать не допускать тех ошибок, которые были допущены на прошлой версии (неожиданное решение, согласен).
И в первую очередь я решил исправить самую весомую проблему — отсутствие документации. Вот встречаешься ты с какой-то ошибкой, следы которой ведут в ту часть инфраструктуры, которую ты настраивал много месяцев назад, и тебе приходится чуть ли не реверс инжениринг проводить, чтобы вспомнить, что и как у тебя там было в своё время настроено, и куда эта ошибка могла закрасться.
Чтобы такого не допускать, достаточно просто куда-то сразу записывать все внесённые изменения, чтобы в будущем достаточно было перечитать краткую сводку вместо того, чтобы рыскать по всей файловой системе. На ум сразу приходит просто делать заметки по каждой части инфраструктуры (виртуальной машине / сервису и т.п.) в тот же Anytype.
Но пока для себя я нашёл другой способ — я в домашнюю директорию каждой VM на сервере, самого хоста сервера и роутера, а также в директории с конфигами отдельных сервисов просто кладу файл README.md, в котором кратко описываю по пунктам, что было настроено в этой части инфраструктуры (основные или специфичные моменты), где это всё располагается, возможно небольшие заметки, почему это сделано именно так, или какие-то возможные нюансы, иногда минимальная памятка, как производить какие-то неочевидные действия, и всё в таком духе. Какой-то единой структуры я пока не придумал, да и это не имеет особого смысла, когда делаешь это только для себя.
Так вот, есть ли у кого-то из вас свои подходы к решению такой проблемы?
Я как-то думал похожим заниматься, но понял что это гиблое дело. В итоге пытаюсь как-то сохранить инфру в репозитории с конфигами для докера. То есть структура примерно такая:
docker-compose.yml
- service1/ – data/… – config
- service2/ – data/… – config – Dockerfile (если нужно собрать контейнер самому, а не из реестра)
А в самом compose файле указаны вообще все сервисы. Тогда так можно делать зависимости друг на друга, как-то их связывать учитывая, что они находятся в одной сети. Логи я вывожу в стандартные потоки для того, чтобы логами занимался докер.
При этом поднятие инфры заново времени не занимает вообще, главное указывать конкретные версии, а не просто latest. Хорошо бы иметь свой registry для контейнеров, которые не тегируют себя, либо для самосборных, тогда проблем с развёртыванием заново не будет примерно никогда. Но пока не занимался этим.
UPD: Сейчас ещё решил сделать репозиторий на GitHub, в котором структурно воссоздана иерархия инфраструктуры в виде директорий, и сохранены все README.md файлы, чтобы также иметь возможность просматривать всё в одном месте, ну и так плюсом будет версионирование и сохранение на случай пересоздания какой-то части с нуля. Убеждаюсь, что Anytype в этом случае будет не особо удобен.

