[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