[Comm] P9 OpenVZ7 - автоматическое добавление veth-интерфейса в бридж
Alex Moskalenko
mav на elserv.msk.su
Чт Дек 17 11:54:44 MSK 2020
В общем, штатными средствами добавить создаваемый интерфейс в мост я так
и не смог. Указание network=bridgename для описания интерфейса не
помогло - скрипт vznetcfg пытается использовать prlsrvctl, которого у
нас нет.
Пока остановился на костыле - прописывание вручную в конфигурационный
файл VE в конфигурацию интерфейса bridge=bridgename и создание скрипта
/usr/share/libvzctl/script.d/vz-netns_dev_add по мотивам аналога из
старого OpenVZ:
#!/bin/bash
. /etc/vz/vz.conf
. /usr/share/libvzctl/scripts/vz-functions
vzcheckvar VEID
vzcheckvar VNAME
vzcheckvar HNAME
. /etc/vz/conf/$VEID.conf
for iface in $(printf %s "$NETIF" |tr ';' '\n'); do
unset BRIDGE
bridge=
host_ifname=
for str in $(printf %s "$iface" |tr ',' '\n'); do
case "$str" in
bridge=*|host_ifname=*)
eval "${str%%=*}=\${str#*=}" ;;
esac
done
[ "$host_ifname" = "$HNAME" ] || continue
[ -n "$bridge" ] && export BRIDGE="$bridge"
break
done
/usr/share/libvzctl/scripts/vz-netns_dev_add
Если кто знает менее извращенный способ (а кстати, как это делается в
RHEL? Ядро ведь из него?) - прошу поделиться знанием.
04.12.2020 17:27, Alex Moskalenko пишет:
>
> 04.12.2020 15:49, Andrew A. Vasilyev пишет:
>
>>> 2. Непонятно пока, что делать с контейнерами, использующими veth. В
>>> p8 был файл vznet.conf, в котором указывался внешний скрипт,
>>> добавляющий veth-интерфейс со стороны хоста в указанный в
>>> конфигурационном файле VE мост. В p9 vzctl вообще не знает параметр
>>> bridge= в конфигурации VE, а файлы vznet.conf похоже вообще не
>>> читается и внешний скрипт не вызывается. В mount-скрипте интерфейс
>>> еще не создан. Как теперь правильно добавлять veth-интерфейсы
>>> контейнеров в бридж?
>>
>> В mount-скрипте можно ждать появления нужного интерфейса, как
>> предлагается в примере из
>> https://wiki.openvz.org/Virtual_Ethernet_device
>> Только нужно обратить внимание на то, что скрипт mount должен
>> находиться в каталоге /var/lib/vz/private/VEID/scripts/, при этом
>> файловая система должна быть смонтирована без флага noexec! Файлы
>> /etc/vz/conf/VEID.mount не поддерживаются. Про скрипты mount и
>> vps.mount написано в vzctl(8).
>>
> Вариант с wiki.openvz.org тоже рассматривал и тестировал, но он у меня
> не сработал, так как vzctl похоже ждет завершения всех потомков
> mount-скрипта, и пока все они не завершатся - интерфейсы не создаются.
> А потомки не завершаются, так как ждут создания интерфейса...
>
Подробная информация о списке рассылки community