diff --git a/CHANGELOG.md b/CHANGELOG.md index 438cbe4f..a998da83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Updated `wwctl node export` to include node IDs. #1718 - Don't add "default" profile to new nodes if it does not exist. #1721 - Make DHCP range optional. +- Don't use DHCP for interfaces attached to a bond. #1743 ### Removed diff --git a/overlays/NetworkManager/internal/networkmanager_test.go b/overlays/NetworkManager/internal/networkmanager_test.go index ff2217c9..b80b61af 100644 --- a/overlays/NetworkManager/internal/networkmanager_test.go +++ b/overlays/NetworkManager/internal/networkmanager_test.go @@ -195,15 +195,15 @@ autoconnect=true [ipv4] method=manual route1=192.168.1.0/24,192.168.2.254 -[vlan] -interface-name=eth0.902 -parent=eth0 -id=902 [ipv6] addr-gen-mode=stable-privacy method=ignore never-default=true +[vlan] +interface-name=eth0.902 +parent=eth0 +id=902 backupFile: true writeFile: true Filename: warewulf-untagged.conf @@ -222,6 +222,91 @@ method=manual addr-gen-mode=stable-privacy method=ignore never-default=true +`, + }, + "NetworkManager:ww4-managed.ww with bond": { + nodes_conf: ` +nodes: + node1: + network devices: + bond0: + type: Bond + device: bond0 + ipaddr: 192.168.3.110 + netmask: 255.255.255.0 + en1: + device: en1 + hwaddr: e6:92:39:49:7b:03 + tags: + master: bond0 + en2: + device: en2 + hwaddr: 9a:77:29:73:14:f1 + tags: + master: bond0 +`, + args: []string{"--render", "node1", "NetworkManager", "etc/NetworkManager/system-connections/ww4-managed.ww"}, + log: `backupFile: true +writeFile: true +Filename: warewulf-bond0.conf + +# This file is autogenerated by warewulf + +[connection] +id=bond0 +interface-name=bond0 +type=bond +[bond] +downdelay=0 +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 +never-default=true +backupFile: true +writeFile: true +Filename: warewulf-en1.conf +# This file is autogenerated by warewulf + +[connection] +id=en1 +interface-name=en1 +type=ethernet +master=bond0 +slave-type=bond +[ethernet] +mac-address=e6:92:39:49:7b:03 +[ipv4] +method=disabled + +[ipv6] +method=disabled +backupFile: true +writeFile: true +Filename: warewulf-en2.conf +# This file is autogenerated by warewulf + +[connection] +id=en2 +interface-name=en2 +type=ethernet +master=bond0 +slave-type=bond +[ethernet] +mac-address=9a:77:29:73:14:f1 +[ipv4] +method=disabled + +[ipv6] +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 6daee3a2..15f0431d 100644 --- a/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww +++ b/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww @@ -39,7 +39,13 @@ mtu={{ $netdev.MTU }} {{- end }} {{- end }} -{{- if not $netdev.Tags.master }} +{{- if $netdev.Tags.master }} +[ipv4] +method=disabled + +[ipv6] +method=disabled +{{- else }} [ipv4] method=manual {{- if $netdev.IpCIDR }} @@ -62,14 +68,6 @@ dns={{$dns}} {{- if $netdev.Tags.DNSSEARCH }} dns-search={{ join ";" (without (regexSplit "[ ;]+" $netdev.Tags.DNSSEARCH -1) "") }}; {{- end }} -{{- end }} - -{{- if eq $netdev.Type "vlan" }} -[vlan] -interface-name={{ $netdev.Device }} -parent={{ $netdev.Tags.parent_device }} -id={{ $netdev.Tags.vlan_id }} -{{- end }} [ipv6] addr-gen-mode=stable-privacy @@ -79,3 +77,11 @@ never-default=true ipaddr="{{ $netdev.Ipaddr6 }}" {{- end }} {{- end }} + +{{- if eq $netdev.Type "vlan" }} +[vlan] +interface-name={{ $netdev.Device }} +parent={{ $netdev.Tags.parent_device }} +id={{ $netdev.Tags.vlan_id }} +{{- end }} +{{- end }} diff --git a/overlays/ifcfg/internal/ifcfg_test.go b/overlays/ifcfg/internal/ifcfg_test.go index c7e8e94b..ff154b5b 100644 --- a/overlays/ifcfg/internal/ifcfg_test.go +++ b/overlays/ifcfg/internal/ifcfg_test.go @@ -166,6 +166,76 @@ IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no +`, + }, + "ifcfg:ifcfg.ww (bond)": { + nodes_conf: ` +nodes: + node1: + network devices: + bond0: + type: Bond + device: bond0 + ipaddr: 192.168.3.110 + netmask: 255.255.255.0 + en1: + device: en1 + hwaddr: e6:92:39:49:7b:03 + tags: + master: bond0 + en2: + device: en2 + hwaddr: 9a:77:29:73:14:f1 + tags: + master: bond0 +`, + args: []string{"--render", "node1", "ifcfg", "etc/sysconfig/network-scripts/ifcfg.ww"}, + log: `backupFile: true +writeFile: true +Filename: ifcfg-bond0.conf + +# This file is autogenerated by warewulf +TYPE=Bond +DEVICE=bond0 +NAME=bond0 +BOOTPROTO=static +DEVTIMEOUT=10 +IPADDR=192.168.3.110 +NETMASK=255.255.255.0 +IPV6INIT=yes +IPV6_AUTOCONF=yes +IPV6_DEFROUTE=yes +IPV6_FAILURE_FATAL=no +backupFile: true +writeFile: true +Filename: ifcfg-en1.conf +# This file is autogenerated by warewulf +TYPE=Ethernet +MASTER=bond0 +DEVICE=en1 +NAME=en1 +BOOTPROTO=static +DEVTIMEOUT=10 +HWADDR=e6:92:39:49:7b:03 +IPV6INIT=yes +IPV6_AUTOCONF=yes +IPV6_DEFROUTE=yes +IPV6_FAILURE_FATAL=no +backupFile: true +writeFile: true +Filename: ifcfg-en2.conf +# This file is autogenerated by warewulf +TYPE=Ethernet +MASTER=bond0 +DEVICE=en2 +NAME=en2 +BOOTPROTO=static +DEVTIMEOUT=10 +HWADDR=9a:77:29:73:14:f1 +IPV6INIT=yes +IPV6_AUTOCONF=yes +IPV6_DEFROUTE=yes +IPV6_FAILURE_FATAL=no `, }, "ifcfg:route.ww": {