Автоматическое создание интерфейса для jail, в жопу systemd
Есть у меня jail для которого я создаю полноценный сетевой стек (vnet).
Относительно редко запускаю его и поэтому не парился с автоматизацией
создания сетевого интерфейса. Появился у меня недавно ещё один jail из
этой же серии, тоже с vnet-ом. В jail.conf вот такое:
[...]
vnet = new;
vnet.interface = epair0b;
[...]
Засада в том, что тут название интерфейса намертво вбито. Мне надо или
создавать заранее все эти epair интерфейсы или не иметь возможности
запускать эти jail-ы параллельно. Задача то проста само собой. Создал
скриптик который будет создавать epair интерфейс (это штука у которой не
просто epairX появляется, а epairXa и epairXb, и один из этих
интерфейсов отдаётся полностью в jail) с человекочитаемым названием:
# cat net-jail-epair.sh
#!/bin/sh -ex
name=$1
ifconfig epaira_$name && exit || :
epair=$(ifconfig epair create)
ifconfig $epair name epaira_$name
ifconfig ${epair%a}b name epairb_$name
ifconfig epaira_$name up
а в jail.conf теперь настройка сети выглядит вот так:
Несколько строк на shell и задача вполне себе решена. Сразу вспомнил мир
systemd где это бы обязательно написали на C, добавив сотник строк кода
для такого use-case.