diff --git a/CHANGELOG.md b/CHANGELOG.md index f4979976..2d3e017f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - `wwctl overlay edit` again writes temporary files to the default location. (After #1886 better resolves the underlying issue from #1473.) #1946 - Prevent brp-mangle-shebangs from changing files in overlays. +- The NetworkManager overlay now only adds an `[ethernet]` section for ethernet interfaces. +- The NetworkManager overlay now sets `ipv4:method=disabled` if no address or route is specified. #1986 ### Fixed @@ -32,6 +34,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Updated golang BuildRequires in RPM specfile. #1990 - Fixed handling of `wwctl` boolean options for disk related seetings. +### Changed + +### Fixed +- Set `SLAVE=yes` in ifcfg files when `MASTER` is set. #1980 + ## v4.6.3, 2025-08-01 ### Added diff --git a/overlays/NetworkManager/internal/networkmanager_test.go b/overlays/NetworkManager/internal/networkmanager_test.go index f9db63e0..498cb7ea 100644 --- a/overlays/NetworkManager/internal/networkmanager_test.go +++ b/overlays/NetworkManager/internal/networkmanager_test.go @@ -91,14 +91,15 @@ type=ethernet autoconnect=true [ethernet] mac-address=e6:92:39:49:7b:03 + [ipv4] method=manual address=192.168.3.21/24 gateway=192.168.3.1 [ipv6] -addr-gen-mode=stable-privacy method=ignore +addr-gen-mode=stable-privacy never-default=true backupFile: true writeFile: true @@ -112,6 +113,7 @@ type=ethernet autoconnect=true [ethernet] mac-address=9a:77:29:73:14:f1 + [ipv4] method=manual address=192.168.3.22/24 @@ -120,8 +122,8 @@ dns=8.8.8.8;8.8.4.4; dns-search=example.com;example.net; [ipv6] -addr-gen-mode=stable-privacy method=ignore +addr-gen-mode=stable-privacy never-default=true `, }, @@ -160,14 +162,15 @@ type=ethernet autoconnect=true [ethernet] mac-address=e6:92:39:49:7b:03 + [ipv4] method=manual address=192.168.3.21/24 gateway=192.168.3.1 [ipv6] -addr-gen-mode=stable-privacy method=ignore +addr-gen-mode=stable-privacy never-default=true backupFile: true writeFile: true @@ -180,6 +183,7 @@ type=ethernet autoconnect=true [ethernet] mac-address=9a:77:29:73:14:f1 + [ipv4] method=manual address=192.168.3.22/24 @@ -188,8 +192,8 @@ dns=8.8.8.8;8.8.4.4; dns-search=example.com;example.net; [ipv6] -addr-gen-mode=stable-privacy method=ignore +addr-gen-mode=stable-privacy never-default=true `, }, @@ -259,14 +263,14 @@ id=tagged interface-name=eth0.902 type=vlan autoconnect=true -[ethernet] + [ipv4] method=manual route1=192.168.1.0/24,192.168.2.254 [ipv6] -addr-gen-mode=stable-privacy method=ignore +addr-gen-mode=stable-privacy never-default=true [vlan] interface-name=eth0.902 @@ -283,12 +287,13 @@ interface-name=eth0 type=ethernet autoconnect=true [ethernet] + [ipv4] -method=manual +method=disabled [ipv6] -addr-gen-mode=stable-privacy method=ignore +addr-gen-mode=stable-privacy never-default=true `, }, @@ -331,14 +336,14 @@ miimon=100 mode=balance-rr xmit_hash_policy=layer2+3 updelay=0 -[ethernet] + [ipv4] method=manual address=192.168.3.110/24 [ipv6] -addr-gen-mode=stable-privacy method=ignore +addr-gen-mode=stable-privacy never-default=true backupFile: true writeFile: true @@ -354,6 +359,7 @@ slave-type=bond autoconnect=true [ethernet] mac-address=e6:92:39:49:7b:03 + [ipv4] method=disabled @@ -373,6 +379,7 @@ slave-type=bond autoconnect=true [ethernet] mac-address=9a:77:29:73:14:f1 + [ipv4] method=disabled diff --git a/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww b/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww index 2586837b..f3781a7f 100644 --- a/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww +++ b/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww @@ -29,7 +29,7 @@ transport-mode=datagram {{- if $netdev.MTU }} mtu={{ $netdev.MTU }} {{- end }} -{{- else }} +{{- else if eq (default "ethernet" (lower $netdev.Type)) "ethernet" }} [ethernet] {{- if $netdev.Hwaddr }} mac-address={{ $netdev.Hwaddr }} @@ -39,18 +39,19 @@ mtu={{ $netdev.MTU }} {{- end }} {{- end }} -{{- if $netdev.Tags.master }} -[ipv4] -method=disabled - -[ipv6] -method=disabled -{{- else }} [ipv4] +{{- $hasRoutes := false }} +{{- range $tk, $tv := $netdev.Tags }} +{{- if eq (substr 0 5 $tk) "route" }}{{ $hasRoutes = true }}{{ end }} +{{- end }} +{{- if and (or $netdev.Ipaddr $hasRoutes) (not $netdev.Tags.master) }} method=manual -{{- if $netdev.IpCIDR }} +{{- if $netdev.Ipaddr }} address={{ $netdev.IpCIDR }} {{- end }} +{{- else }} +method=disabled +{{- end }} {{- if $netdev.Gateway }} gateway={{ $netdev.Gateway }} {{- end }} @@ -70,8 +71,11 @@ dns-search={{ join ";" (without (regexSplit "[ ;]+" $netdev.Tags.DNSSEARCH -1) " {{- end }} [ipv6] -addr-gen-mode=stable-privacy +{{- if $netdev.Tags.master }} +method=disabled +{{- else }} method=ignore +addr-gen-mode=stable-privacy never-default=true {{- if $netdev.Ipaddr6 }} ipaddr="{{ $netdev.Ipaddr6 }}" diff --git a/overlays/ifcfg/internal/ifcfg_test.go b/overlays/ifcfg/internal/ifcfg_test.go index 164349d9..9f4d5807 100644 --- a/overlays/ifcfg/internal/ifcfg_test.go +++ b/overlays/ifcfg/internal/ifcfg_test.go @@ -282,6 +282,7 @@ writeFile: true Filename: ifcfg-en1.conf # This file is autogenerated by warewulf TYPE=Ethernet +SLAVE=yes MASTER=bond0 DEVICE=en1 NAME=en1 @@ -298,6 +299,7 @@ writeFile: true Filename: ifcfg-en2.conf # This file is autogenerated by warewulf TYPE=Ethernet +SLAVE=yes MASTER=bond0 DEVICE=en2 NAME=en2 diff --git a/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww b/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww index f29a7bd0..c246d7a1 100644 --- a/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww +++ b/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww @@ -7,6 +7,7 @@ VLAN=yes TYPE={{ default "Ethernet" $netdev.Type }} {{- end }} {{- if $netdev.Tags.master }} +SLAVE=yes MASTER={{ $netdev.Tags.master }} {{- end }} {{- if $netdev.Device }}