- Есть 3…20 железок-одноплатников.
- Грузят armbian с SD-карты, mount ro, чтобы флешку логами не портить.
- На железках крутятся какие-то самописные на C++ бинарники или сервисы типа motion, которые грябят jpg с USB веб-камеры раз в секунду и пихают по сети на большого брата.
- Всевозможны бинарники на железках оформлены как сервисы systemd. То есть, для администрирования железки, чтобы там запустить какой-то новый бинарник, мне надо закинуть каких-то бинарей в /root и что-то помутить в /etc/systemd/…, чтобы эти бинари запускало на старте. Для дебага, могу пойти по ssh на железку, позапускать руками.
- Образы SD-карт могут быть различны только в области сетевых настроек: каждая железка работает в разной wi-fi сети или в разных 4G-сетях и всякие пароли и SSID-ы должны быть как-то прибиты. Эти настройки делаются очень редко так: ssh -> remount / rw -> make changes -> fsync -> reboot
- Белых IP у железок нет, не будет, и не нужно. Это чисто клиенты в глубинах пользовательских домашних сетей. Ходить на железку по сети можно только приехав к клиенту с ноутом и воткнувшись в eth кабелем и такой сервис нужен крайне редко, обычно один раз при развёртывании.
В чём задача:
-
После старта железки вытягивать из сети с центрального сервера файл-архив с оверлеем корня, в котором (оверлее) лежат необходимые изменения базовово образа, содержащие нужные для этой железки бинари и сервисы. Монтировать этот оверлей на корень и переинициализировать systemd, чтобы он учёл изменения.
-
Железка ходит на центральный сервер по доменному имени и предъявляет свой токен, что позволяет центральному серверу понять кто пришёл и какой образ оверлея подсунуть. То есть, железка дергает center.ru/token/17237123879187239164
-
Железка раз в 10 секунд дёргает какой-нибудь управляющий URL, в котором ей могут сообщить, что надо ребут или стянуть новый образ.
Короче, не намутить ли такой велосипед руками с нуля? Может есть готовый проект на подобную тему?
Перемещено hobbit из general