Thanks for the suggestion. I tried "generic" but got the same error message.
# nmcli con add type generic ifname eth0 con-name eth0g ip4 10.1.16.92/16 gw4 10.1.0.1 Connection 'eth0g' (17d97a0e-363f-4478-989f-64a4dac46bb4) successfully added. # nmcli con show NAME UUID TYPE DEVICE eth0g 17d97a0e-363f-4478-989f-64a4dac46bb4 generic -- System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet -- # nmcli dev DEVICE TYPE STATE CONNECTION lo loopback unmanaged -- eth0 macvlan unmanaged -- # nmcli con up eth0g Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged). The scheme I showed was part of the LXD profile, which exposes the host nic as a macvlan to the container. So from the container OS point of view, the interface is not created by NM (hence what you said "external"). I am not sure if I am able to create a connection of type macvlan over an interface which is already a macvlan of something else. When creating a connection of type macvlan, I need to provide the "parent" or "master" interface, which is not available anyway in the container. And thank you very much for kindly pointing out the network-scripts package in RHEL/CentOS 8. Those scripts were originally included in initscripts.rpm and I didn't know they were still provided. On Thu, Oct 17, 2019 at 12:44 AM Thomas Haller <thal...@redhat.com> wrote: > On Wed, 2019-10-16 at 17:10 -0700, Ling Li via networkmanager-list > wrote: > > Hi, > > > I couldn't get NetworkManager to work in a container to bring up > > (virtual) NICs with static ip. My hypothesis is that NM can't apply > > an Ethernet connection to a macvlan device, and wonder if there are > > workarounds that I may try. > > > > The setup is as follows: > > > > - The host is Ubuntu 18.04. A macvlan nic is provided to containers > > with the following profile > > > > devices: > > eth0: > > name: eth0 > > nictype: macvlan > > parent: eno1 > > type: nic > > What is this scheme? Is this netplan, or something from LXD? Anyway, as > far as NetworkManager is concerned, what matters is > > nmcli connection show > nmcli connection show "$MY_PROFILE" > nmcli device status > > > - The LXD container runs CentOS 7 with NM 1.18.0. > > > > - The "old-style" network scripts work, with the following > > configuration file: > > > > # cat /etc/sysconfig/network-scripts/ifcfg-eth0 > > DEVICE=eth0 > > ONBOOT=yes > > TYPE=Ethernet > > BOOTPROTO=none > > IPV4_FAILURE_FATAL="no" > > IPADDR=10.1.16.92 > > PREFIX=16 > > GATEWAY=10.1.0.1 > > This is an ethernet profile. > > In NetworkManager (and initscripts' ifcfg format too!!) , you generally > configure one profile for the link (layer 2) and IP configuration. That > is different from for example systemd-networkd, which has .netdev, > .network, and .link files. > > Yes, network-scripts don't really care, if the device already exists, > then the script will proceed and just do IP configuration, regardless > that this not a common ethernet. That's why initscripts work. > > (Sidenote: there is the "generic" type, which maybe could be used as > Layer 3 configuration only and maybe can be used to all interfaces that > you create outside of NetworkManager. But that does not seem desirable > here). > > Anyway, this means, you cannot use an "connection.type=802-3-ethernet" > profile to do something with a MACVlan device. > > > > - But NM won't work. > > > > # nmcli device > > DEVICE TYPE STATE CONNECTION > > lo loopback unmanaged -- > > eth0 macvlan unmanaged -- > > Hm, you created the MACVlan outside of NM. It's marked as unmanaged, > because NM didn't create it. > > > > # nmcli connection > > NAME UUID TYPE DEVICE > > System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet -- > > > > # ip link > > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN > > mode DEFAULT qlen 1000 > > link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 > > 23: eth0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc > > noqueue state UP mode DEFAULT qlen 1000 > > link/ether 00:16:3e:10:b3:80 brd ff:ff:ff:ff:ff:ff link-netnsid 0 > > > > # nmcli connection up 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 > > Error: Connection activation failed: No suitable device found for > > this connection (device lo not available because device is strictly > > unmanaged). > > > > I tried "nmcli dev set eth0 managed yes" but still couldn't bring the > > connection up. > > > It's not clear to me whether you were able to successfully make the > device managed. As said, the device is unmanaged because NM sees it's > created externally. An explicit user command should override that. Of > course, afterwards you still cannot activate an type=ethernet profile > on a MACVLan device. > > > > The error message probably claims that eth0 is not a suitable device > > (due to its type is macvlan). I found a post back from 2010 > > > https://mail.gnome.org/archives/networkmanager-list/2010-March/msg00308.html > > asking if NM can be forced to trade a macvlan as an Ethernet device, > > which might be related? > > Messages from a decade ago seem to have little relevance. > > > Anyway, since the "old-style" network scrips are already removed from > > CentOS 8, > > initscripts are not removed, and of course they won't be removed for > the entire lifetime of CentOS8/RHEL8. They are merely not installed by > default. Try `dnf install network-scripts`. > > Yes, they are deprecated in 8, and future RHEL/CentOS versions (>=9) > may or may not remove them. But they are still there, very much like in > rhel-7. > > > > I really wonder if NM can be used in a container with macvlan > > devices. Any suggestions? > > > Either create a profile of type macvlan, and let NM create the device. > > nmcli connection add type macvlan ... > > Or create the device outside of NM and use a profile of type "generic". > > nmcli connection add type generic ... > > > I think "generic" profiles are not much used, so it might not work (I > don't know whehter this is tested). If that doesn't work, please report > a bug. > > > > best, > Thomas > >
_______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list