Всем привет! Не был уверен, где лучше опубликовать это, но надеюсь, кому-то пригодится.
С вводом контейнеров в ROSv7 открылся целый мир возможностей для Tik, а также для всех, кому нужно массово делать netinstall или удалённо запускать netinstall в поле (например, Tik AP, подключённый к RB5009). Возможно, это будет полезно.
По сути, я упаковал Linux netinstall-cli в контейнер вместе с qemu-i386, чтобы запускать этот бинарник на других процессорах (например, ARM/ARM64).
В своих тестах я смог сделать это с RB4011 и планирую дальше проверять на других устройствах, умеющих запускать контейнеры (например, RB5009/NetPower и т.д.).
Шаги:
Нижеописанные действия создадут контейнер, который будет связан с ether5, и настроят netinstall для загрузки файла routeros-mipsbe-6.48.6.npk
- Включить контейнеры и установить пакет (см. wiki)
- Создать папку images на disk1
- Скопировать npk-файлы в папку images
- Создать veth-интерфейс:
/interface veth add address=192.168.88.6/24 gateway=192.168.88.1 name=veth1
- Создать мост:
/interface bridge add name=dockers
- Добавить veth и физический порт в мост:
/interface bridge port add bridge=dockers interface=veth1
/interface bridge port add bridge=dockers interface=ether5
- Создать mount для npk-файлов:
/container mounts add dst=/app/images name=images src=/disk1/images
- Создать набор переменных окружения и указать npk-файл для использования:
/container envs add key=NETINSTALL_NPK name=NETINSTALL value=routeros-mipsbe-6.48.6.npk
- Создать контейнер:
/container add remote-image=semaja2/mikrotik-netinstall:latest envlist=NETINSTALL interface=veth1 logging=yes mounts=images workdir=/app
После запуска контейнера его можно отслеживать через логи главного Tik:
[admin@MikroTik] /container> /log/print where topics~“container”
Пример логов:
18:42:50 container,info,debug Version: 7.5(2022-08-30 09:34:59)
18:42:50 container,info,debug client: DC:2C:6E:68:XX:XX
18:42:50 container,info,debug sendFile 4877676
18:43:17 container,info,debug Using server IP: 192.168.88.6
18:43:17 container,info,debug Use Netmask: 255.255.255.0
18:43:17 container,info,debug Starting PXE server
18:43:17 container,info,debug Waiting for RouterBOARD…
18:43:17 container,info,debug Discovered RouterBOARD…
18:43:17 container,info,debug Formatting…
18:43:17 container,info,debug Sending package routeros-mipsbe-6.48.6.npk …
18:43:17 container,info,debug Ready for reboot…
18:43:17 container,info,debug Sent reboot command
С вводом контейнеров в ROSv7 открылся целый мир возможностей для Tik, а также для всех, кому нужно массово делать netinstall или удалённо запускать netinstall в поле (например, Tik AP, подключённый к RB5009). Возможно, это будет полезно.
По сути, я упаковал Linux netinstall-cli в контейнер вместе с qemu-i386, чтобы запускать этот бинарник на других процессорах (например, ARM/ARM64).
В своих тестах я смог сделать это с RB4011 и планирую дальше проверять на других устройствах, умеющих запускать контейнеры (например, RB5009/NetPower и т.д.).
Шаги:
Нижеописанные действия создадут контейнер, который будет связан с ether5, и настроят netinstall для загрузки файла routeros-mipsbe-6.48.6.npk
- Включить контейнеры и установить пакет (см. wiki)
- Создать папку images на disk1
- Скопировать npk-файлы в папку images
- Создать veth-интерфейс:
/interface veth add address=192.168.88.6/24 gateway=192.168.88.1 name=veth1
- Создать мост:
/interface bridge add name=dockers
- Добавить veth и физический порт в мост:
/interface bridge port add bridge=dockers interface=veth1
/interface bridge port add bridge=dockers interface=ether5
- Создать mount для npk-файлов:
/container mounts add dst=/app/images name=images src=/disk1/images
- Создать набор переменных окружения и указать npk-файл для использования:
/container envs add key=NETINSTALL_NPK name=NETINSTALL value=routeros-mipsbe-6.48.6.npk
- Создать контейнер:
/container add remote-image=semaja2/mikrotik-netinstall:latest envlist=NETINSTALL interface=veth1 logging=yes mounts=images workdir=/app
После запуска контейнера его можно отслеживать через логи главного Tik:
[admin@MikroTik] /container> /log/print where topics~“container”
Пример логов:
18:42:50 container,info,debug Version: 7.5(2022-08-30 09:34:59)
18:42:50 container,info,debug client: DC:2C:6E:68:XX:XX
18:42:50 container,info,debug sendFile 4877676
18:43:17 container,info,debug Using server IP: 192.168.88.6
18:43:17 container,info,debug Use Netmask: 255.255.255.0
18:43:17 container,info,debug Starting PXE server
18:43:17 container,info,debug Waiting for RouterBOARD…
18:43:17 container,info,debug Discovered RouterBOARD…
18:43:17 container,info,debug Formatting…
18:43:17 container,info,debug Sending package routeros-mipsbe-6.48.6.npk …
18:43:17 container,info,debug Ready for reboot…
18:43:17 container,info,debug Sent reboot command
