Merge pull request #1941 from anderbubble/netplan

Improved netplan support
This commit is contained in:
Christian Goll
2025-07-21 09:38:25 +02:00
committed by GitHub
4 changed files with 81 additions and 31 deletions

View File

@@ -9,6 +9,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Changed
- `warewulfd` overlay autobuild rebuilds overlays after node discovery. #1468
### Fixed
- Improved netplan support. #1873
## v4.6.2, 2025-07-09

View File

@@ -14,7 +14,7 @@ func Test_netplanOverlay(t *testing.T) {
env := testenv.New(t)
defer env.RemoveAll()
env.ImportFile("etc/warewulf/nodes.conf", "nodes.conf")
env.ImportFile("var/lib/warewulf/overlays/netplan/rootfs/etc/netplan/01-netcfg.yaml.ww", "../rootfs/etc/netplan/01-netcfg.yaml.ww")
env.ImportFile("var/lib/warewulf/overlays/netplan/rootfs/etc/netplan/warewulf.yaml.ww", "../rootfs/etc/netplan/warewulf.yaml.ww")
tests := []struct {
name string
@@ -23,7 +23,7 @@ func Test_netplanOverlay(t *testing.T) {
}{
{
name: "netplan",
args: []string{"--render", "node1", "netplan", "etc/netplan/01-netcfg.yaml.ww"},
args: []string{"--render", "node1", "netplan", "etc/netplan/warewulf.yaml.ww"},
log: netplan,
},
}
@@ -49,26 +49,22 @@ func Test_netplanOverlay(t *testing.T) {
const netplan string = `backupFile: true
writeFile: true
Filename: 01-netcfg.yaml
Filename: etc/netplan/warewulf.yaml
# This file is autogenerated by warewulf
network:
version: 2
renderer: networkd
ethernets:
wwnet0:
addresses:
- 192.168.3.21/24
mtu: 1500
backupFile: true
writeFile: true
Filename: 01-netcfg.yaml
# This file is autogenerated by warewulf
network:
version: 2
renderer: networkd
ethernets:
wwnet1:
addresses:
- 192.168.3.22/24
mtu: 9000
wwnet0:
dhcp4: no
optional: true
addresses:
- 192.168.3.21/24
mtu: 1500
wwnet1:
dhcp4: no
optional: true
addresses:
- 192.168.3.22/24
mtu: 9000
`

View File

@@ -1,12 +0,0 @@
{{range $devname, $netdev := .NetDevs -}}
{{ file "01-netcfg.yaml" }}
# This file is autogenerated by warewulf
network:
version: 2
renderer: networkd
ethernets:
{{$netdev.Device}}:
addresses:
- {{$netdev.IpCIDR}}
mtu: {{$netdev.MTU}}
{{end -}}

View File

@@ -0,0 +1,63 @@
# This file is autogenerated by warewulf
network:
version: 2
renderer: networkd
{{- $ethernets := list }}
{{- $bonds := list }}
{{- $NetDevs := .NetDevs }}
{{- range $devname, $netdev := .NetDevs }}
{{- if $netdev.Device }}
{{- if eq (default "ethernet" (lower $netdev.Type)) "ethernet" }}
{{- $ethernets = append $ethernets $devname }}
{{- else if eq (lower $netdev.Type) "bond" }}
{{- $bonds = append $bonds $devname }}
{{- end }}
{{- end }}
{{- end }}
{{- if $ethernets }}
ethernets:
{{- range $devname := $ethernets }}
{{- $netdev := (index $NetDevs $devname) }}
{{$netdev.Device}}:
dhcp4: no
optional: true
{{- if $netdev.IpCIDR }}
addresses:
- {{$netdev.IpCIDR}}
{{- end }}
{{- if $netdev.MTU}}
mtu: {{$netdev.MTU}}
{{- end }}
{{- end }}
{{- end }}
{{- if $bonds }}
bonds:
{{- range $devname := $bonds }}
{{- $netdev := (index $NetDevs $devname) }}
{{$netdev.Device}}:
dhcp4: no
optional: true
{{- if $netdev.IpCIDR }}
addresses:
- {{$netdev.IpCIDR}}
{{- end }}
{{- if $netdev.MTU}}
mtu: {{$netdev.MTU}}
{{- end }}
parameters:
mode: {{ default "balance-rr" $netdev.Tags.mode }}
mii-monitor-interval: {{ default 100 $netdev.Tags.miimon }}
{{- $interfaces := list }}
{{- range $ifacename, $iface := $NetDevs }}
{{- if eq $iface.Tags.master $devname }}
{{- $interfaces = append $interfaces $ifacename }}
{{- end }}
{{- end }}
{{- if $interfaces }}
interfaces:
{{- range $ifacename := $interfaces }}
- {{ $ifacename }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}