From 0c6e7cc58a39216e53afdf059e97149fb0148c83 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Mon, 7 Oct 2024 12:04:28 +0200 Subject: [PATCH] fixes for split overlays Signed-off-by: Christian Goll --- .../app/wwctl/container/list/main_test.go | 33 +--- .../app/wwctl/container/rename/main_test.go | 2 +- internal/app/wwctl/helper/printhelper.go | 1 - internal/app/wwctl/node/imprt/main.go | 1 - internal/app/wwctl/node/list/main_test.go | 176 +++++++----------- internal/app/wwctl/overlay/build/main.go | 5 +- internal/app/wwctl/overlay/show/main.go | 13 +- internal/pkg/node/datastructure.go | 4 +- internal/pkg/overlay/datastructure.go | 1 + .../internal/networkmanager_test.go | 2 - overlays/NetworkManager/internal/nodes.conf | 38 +++- .../system-connections/ww4-managed.ww | 13 +- .../debian.interfaces/internal/nodes.conf | 38 +++- .../etc/network/interfaces.d/default.ww | 18 +- overlays/debug/internal/debug_test.go | 83 ++++----- overlays/debug/internal/nodes.conf | 38 +++- .../rootfs/warewulf/template-variables.md.ww | 80 ++++---- overlays/fstab/internal/nodes.conf | 38 +++- overlays/host/internal/nodes.conf | 38 +++- overlays/host/rootfs/etc/hosts.ww | 6 +- overlays/hostname/internal/nodes.conf | 38 +++- overlays/hosts/internal/nodes.conf | 38 +++- overlays/hosts/rootfs/etc/hosts.ww | 6 +- overlays/ifcfg/internal/ifcfg_test.go | 2 - overlays/ifcfg/internal/nodes.conf | 38 +++- .../etc/sysconfig/network-scripts/ifcfg.ww | 13 +- overlays/ignition/internal/nodes.conf | 38 +++- overlays/issue/internal/issue_test.go | 4 +- overlays/issue/internal/nodes.conf | 38 +++- overlays/resolv/internal/nodes.conf | 38 +++- .../ssh.authorized_keys/internal/nodes.conf | 38 +++- overlays/ssh.host_keys/internal/nodes.conf | 38 +++- overlays/syncuser/internal/nodes.conf | 38 +++- overlays/systemd.netname/internal/nodes.conf | 38 +++- overlays/udev.netname/internal/nodes.conf | 38 +++- overlays/wicked/internal/nodes.conf | 38 +++- .../rootfs/etc/wicked/ifconfig/ifcfg.xml.ww | 22 ++- overlays/wwclient/internal/nodes.conf | 38 +++- overlays/wwinit/internal/nodes.conf | 38 +++- 39 files changed, 792 insertions(+), 415 deletions(-) diff --git a/internal/app/wwctl/container/list/main_test.go b/internal/app/wwctl/container/list/main_test.go index 9ed7a3f6..07c7ba8a 100644 --- a/internal/app/wwctl/container/list/main_test.go +++ b/internal/app/wwctl/container/list/main_test.go @@ -4,6 +4,7 @@ import ( "bytes" "strings" "testing" + "time" "github.com/stretchr/testify/assert" "github.com/warewulf/warewulf/internal/pkg/api/routes/wwapiv1" @@ -12,7 +13,7 @@ import ( "github.com/warewulf/warewulf/internal/pkg/wwlog" ) -func Test_List_Args(t *testing.T) { +func Test_List(t *testing.T) { tests := []struct { name string args []string @@ -60,30 +61,14 @@ nodes: buf := new(bytes.Buffer) baseCmd := GetCommand() baseCmd.SetArgs(tt.args) - stdoutR, stdoutW, _ := os.Pipe() - os.Stdout = stdoutW - wwlog.SetLogWriter(os.Stdout) - baseCmd.SetOut(os.Stdout) - baseCmd.SetErr(os.Stdout) + baseCmd.SetOut(nil) + baseCmd.SetErr(nil) + wwlog.SetLogWriter(buf) err := baseCmd.Execute() - if tt.fail { - assert.Error(t, err) - } else { - assert.NoError(t, err) - } - stdoutC := make(chan string) - go func() { - var buf bytes.Buffer - _, _ = io.Copy(&buf, stdoutR) - stdoutC <- buf.String() - }() - stdoutW.Close() - stdout := <-stdoutC - assert.Equal(t, tt.output, stdout) - assert.Equal(t, - strings.ReplaceAll(strings.TrimSpace(tt.output), " ", ""), - strings.ReplaceAll(strings.TrimSpace(stdout), " ", "")) - + assert.NoError(t, err) + assert.Contains(t, + strings.Join(strings.Fields(buf.String()), ""), + strings.Join(strings.Fields(tt.stdout), "")) }) } } diff --git a/internal/app/wwctl/container/rename/main_test.go b/internal/app/wwctl/container/rename/main_test.go index e5058e48..59d330bc 100644 --- a/internal/app/wwctl/container/rename/main_test.go +++ b/internal/app/wwctl/container/rename/main_test.go @@ -2,6 +2,7 @@ package rename import ( "bytes" + "os" "path" "testing" @@ -10,7 +11,6 @@ import ( "github.com/warewulf/warewulf/internal/pkg/testenv" "github.com/warewulf/warewulf/internal/pkg/warewulfd" "github.com/warewulf/warewulf/internal/pkg/wwlog" - "github.com/warewulf/warewulf/internal/pkg/wwlog" ) func Test_Rename(t *testing.T) { diff --git a/internal/app/wwctl/helper/printhelper.go b/internal/app/wwctl/helper/printhelper.go index c86c7b1d..ada9d5fd 100644 --- a/internal/app/wwctl/helper/printhelper.go +++ b/internal/app/wwctl/helper/printhelper.go @@ -5,7 +5,6 @@ import ( "strings" "github.com/olekukonko/tablewriter" - "github.com/warewulf/warewulf/internal/pkg/wwlog" ) type PrintHelper struct { diff --git a/internal/app/wwctl/node/imprt/main.go b/internal/app/wwctl/node/imprt/main.go index 349a8cb5..5f996c36 100644 --- a/internal/app/wwctl/node/imprt/main.go +++ b/internal/app/wwctl/node/imprt/main.go @@ -12,7 +12,6 @@ import ( "github.com/warewulf/warewulf/internal/pkg/api/routes/wwapiv1" apiutil "github.com/warewulf/warewulf/internal/pkg/api/util" "github.com/warewulf/warewulf/internal/pkg/node" - "github.com/warewulf/warewulf/internal/pkg/wwlog" "gopkg.in/yaml.v3" ) diff --git a/internal/app/wwctl/node/list/main_test.go b/internal/app/wwctl/node/list/main_test.go index a3607200..9297f011 100644 --- a/internal/app/wwctl/node/list/main_test.go +++ b/internal/app/wwctl/node/list/main_test.go @@ -18,14 +18,16 @@ import ( func Test_List(t *testing.T) { tests := []struct { - name string - args []string - stdout string - inDb string + name string + args []string + wantErr bool + stdout string + inDb string }{ { - name: "single node list", - args: []string{}, + name: "single node list", + args: []string{}, + wantErr: false, stdout: ` NODE NAME PROFILES NETWORK n01 [default] `, @@ -39,8 +41,9 @@ nodes: `, }, { - name: "multiple nodes list", - args: []string{}, + name: "multiple nodes list", + args: []string{}, + wantErr: false, stdout: ` NODE NAME PROFILES NETWORK n01 [default] n02 [default] @@ -58,8 +61,9 @@ nodes: `, }, { - name: "node list returns multiple nodes", - args: []string{"n01,n02"}, + name: "node list returns multiple nodes", + args: []string{"n01,n02"}, + wantErr: false, stdout: ` NODE NAME PROFILES NETWORK n01 [default] n02 [default] @@ -77,8 +81,9 @@ nodes: `, }, { - name: "node list returns multiple nodes (case 2)", - args: []string{"n01,n03"}, + name: "node list returns multiple nodes (case 2)", + args: []string{"n01,n03"}, + wantErr: false, stdout: ` NODE NAME PROFILES NETWORK n01 [default] n03 [default] @@ -105,8 +110,9 @@ nodes: `, }, { - name: "node list returns one node", - args: []string{"n01,"}, + name: "node list returns one node", + args: []string{"n01,"}, + wantErr: false, stdout: ` NODE NAME PROFILES NETWORK n01 [default] `, @@ -123,8 +129,9 @@ nodes: `, }, { - name: "node list profile with network", - args: []string{}, + name: "node list profile with network", + args: []string{}, + wantErr: false, stdout: ` NODE NAME PROFILES NETWORK n01 [default] default `, @@ -140,18 +147,12 @@ nodes: - default `}, { - name: "node list profile with comment", - args: []string{"-a"}, + name: "node list profile with comment", + args: []string{"-a"}, + wantErr: false, stdout: `NODE FIELD PROFILE VALUE -n01 Id -- n01 n01 Comment default profilecomment -n01 Ipxe -- (default) -n01 RuntimeOverlay -- (hosts,ssh.authorized_keys,syncuser) -n01 SystemOverlay -- (wwinit,wwclient,fstab,hostname,ssh.host_keys,issue,resolv,udev.netname,systemd.netname,ifcfg,NetworkManager,debian.interfaces,wicked,ignition) -n01 Root -- (initramfs) -n01 Init -- (/sbin/init) -n01 Kernel.Args -- (quiet crashkernel=no vga=791 net.naming-scheme=v238) -n01 Profiles -- default +n01 Profiles default `, inDb: `WW_INTERNAL: 45 nodeprofiles: @@ -163,18 +164,12 @@ nodes: - default `}, { - name: "node list profile with comment superseded", - args: []string{"-a"}, + name: "node list profile with comment superseded", + args: []string{"-a"}, + wantErr: false, stdout: `NODE FIELD PROFILE VALUE -n01 Id -- n01 n01 Comment SUPERSEDED nodecomment -n01 Ipxe -- (default) -n01 RuntimeOverlay -- (hosts,ssh.authorized_keys,syncuser) -n01 SystemOverlay -- (wwinit,wwclient,fstab,hostname,ssh.host_keys,issue,resolv,udev.netname,systemd.netname,ifcfg,NetworkManager,debian.interfaces,wicked,ignition) -n01 Root -- (initramfs) -n01 Init -- (/sbin/init) -n01 Kernel.Args -- (quiet crashkernel=no vga=791 net.naming-scheme=v238) -n01 Profiles -- default +n01 Profiles default `, inDb: `WW_INTERNAL: 45 nodeprofiles: @@ -187,8 +182,9 @@ nodes: - default `}, { - name: "node list profile with ipmi user", - args: []string{"-i"}, + name: "node list profile with ipmi user", + args: []string{"-i"}, + wantErr: false, stdout: `NODE IPMIIPADDR IPMIPORT IPMIUSERNAME IPMIINTERFACE n01 admin `, @@ -203,8 +199,9 @@ nodes: - default `}, { - name: "node list profile with ipmi user superseded", - args: []string{"-i"}, + name: "node list profile with ipmi user superseded", + args: []string{"-i"}, + wantErr: false, stdout: `NODE IPMIIPADDR IPMIPORT IPMIUSERNAME IPMIINTERFACE n01 user `, @@ -231,8 +228,9 @@ nodes: - p1 - p2 `, - name: "multiple profiles list", - args: []string{}, + name: "multiple profiles list", + args: []string{}, + wantErr: false, stdout: ` NODE NAME PROFILES NETWORK n01 [p1 p2] `}, @@ -247,17 +245,11 @@ nodes: - p1 - p2 `, - name: "multiple profiles list all", - args: []string{"-a"}, + name: "multiple profiles list all", + args: []string{"-a"}, + wantErr: false, stdout: `NODE FIELD PROFILE VALUE -n01 Id -- n01 -n01 Ipxe -- (default) -n01 RuntimeOverlay -- (hosts,ssh.authorized_keys,syncuser) -n01 SystemOverlay -- (wwinit,wwclient,fstab,hostname,ssh.host_keys,issue,resolv,udev.netname,systemd.netname,ifcfg,NetworkManager,debian.interfaces,wicked,ignition) -n01 Root -- (initramfs) -n01 Init -- (/sbin/init) -n01 Kernel.Args -- (quiet crashkernel=no vga=791 net.naming-scheme=v238) -n01 Profiles -- p1,p2 +n01 Profiles p1,p2 `}, { inDb: `WW_INTERNAL: 45 @@ -271,10 +263,11 @@ nodes: profiles: - p1 `, - name: "multiple overlays list", - args: []string{"-l"}, + name: "multiple overlays list", + args: []string{"-l"}, + wantErr: false, stdout: `NODE NAME KERNEL OVERRIDE CONTAINER OVERLAYS (S/R) -n01 -- -- (wwinit,wwclient,fstab,hostname,ssh.host_keys,issue,resolv,udev.netname,systemd.netname,ifcfg,NetworkManager,debian.interfaces,wicked,ignition)/rop1,rop2 +n01 /rop1,rop2 `}, { inDb: `WW_INTERNAL: 45 @@ -293,10 +286,11 @@ nodes: - nop1 - ~rop1 `, - name: "multiple overlays list", - args: []string{"-l"}, + name: "multiple overlays list", + args: []string{"-l"}, + wantErr: false, stdout: `NODE NAME KERNEL OVERRIDE CONTAINER OVERLAYS (S/R) -n01 -- -- sop1/rop2,nop1 ~{rop1} +n01 sop1/nop1,~rop1,rop1,rop2 `}, { inDb: `WW_INTERNAL: 45 @@ -315,17 +309,11 @@ nodes: - nop1 - ~rop1 `, - name: "multiple overlays list all", - args: []string{"-a"}, + name: "multiple overlays list all", + args: []string{"-a"}, + wantErr: false, stdout: `NODE FIELD PROFILE VALUE -n01 Id -- n01 -n01 Ipxe -- (default) -n01 RuntimeOverlay SUPERSEDED rop2,nop1 ~{rop1} -n01 SystemOverlay p1 sop1 -n01 Root -- (initramfs) -n01 Init -- (/sbin/init) -n01 Kernel.Args -- (quiet crashkernel=no vga=791 net.naming-scheme=v238) -n01 Profiles -- p1 +n01 Profiles p1 `}, { inDb: `WW_INTERNAL: 45 @@ -341,17 +329,12 @@ nodes: runtime overlay: - nop1 `, - name: "multiple overlays list all", - args: []string{"-a"}, + name: "multiple overlays list all", + args: []string{"-a"}, + wantErr: false, stdout: `NODE FIELD PROFILE VALUE -n01 Id -- n01 -n01 Ipxe -- (default) -n01 RuntimeOverlay -- (hosts,ssh.authorized_keys,syncuser) -n01 SystemOverlay SUPERSEDED profileinit,nodeinit -n01 Root -- (initramfs) -n01 Init -- (/sbin/init) -n01 Kernel.Args -- (quiet crashkernel=no vga=791 net.naming-scheme=v238) -n01 Profiles -- p1 +n01 Profiles p1 +n01 RuntimeOverlay p1+nop1,rop1,rop2 `}, } @@ -477,36 +460,15 @@ nodes: baseCmd.SetArgs(tt.args) baseCmd.SetOut(buf) baseCmd.SetErr(buf) - wwlog.SetLogWriter(buf) - err := baseCmd.Execute() - assert.NoError(t, err) - for _, expected_output := range tt.output { - assert.Equal(t, expected_output, buf.String()) + err = baseCmd.Execute() + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) } + assert.Contains(t, + strings.Join(strings.Fields(tt.stdout), ""), + strings.Join(strings.Fields(buf.String()), "")) }) } } - -func verifyOutput(t *testing.T, baseCmd *cobra.Command, content string) { - stdoutR, stdoutW, _ := os.Pipe() - os.Stdout = stdoutW - wwlog.SetLogWriter(os.Stdout) - baseCmd.SetOut(os.Stdout) - baseCmd.SetErr(os.Stdout) - err := baseCmd.Execute() - assert.NoError(t, err) - - strip, _ := regexp.Compile("(?m)(^ *| *$)") - - stdoutC := make(chan string) - go func() { - var buf bytes.Buffer - _, _ = io.Copy(&buf, stdoutR) - stdoutC <- buf.String() - }() - stdoutW.Close() - - stdout := <-stdoutC - assert.NotEmpty(t, stdout, "output should not be empty") - assert.Equal(t, strip.ReplaceAllString(content, ""), strip.ReplaceAllString(stdout, "")) -} diff --git a/internal/app/wwctl/overlay/build/main.go b/internal/app/wwctl/overlay/build/main.go index fc867e18..71e24b3c 100644 --- a/internal/app/wwctl/overlay/build/main.go +++ b/internal/app/wwctl/overlay/build/main.go @@ -7,7 +7,6 @@ import ( "strings" "syscall" - "github.com/pkg/errors" "github.com/spf13/cobra" warewulfconf "github.com/warewulf/warewulf/internal/pkg/config" "github.com/warewulf/warewulf/internal/pkg/hostlist" @@ -20,12 +19,12 @@ func CobraRunE(cmd *cobra.Command, args []string) error { controller := warewulfconf.Get() nodeDB, err := node.New() if err != nil { - return errors.Wrap(err, "couldn't open node configuration") + return fmt.Errorf("couldn't open node configuration: %s", err) } db, err := nodeDB.FindAllNodes() if err != nil { - return errors.Wrap(err, "could not get node list") + return fmt.Errorf("could not get node list: %s", err) } if len(args) > 0 { diff --git a/internal/app/wwctl/overlay/show/main.go b/internal/app/wwctl/overlay/show/main.go index c64cd730..84c1a038 100644 --- a/internal/app/wwctl/overlay/show/main.go +++ b/internal/app/wwctl/overlay/show/main.go @@ -25,34 +25,27 @@ func CobraRunE(cmd *cobra.Command, args []string) error { overlaySourceDir = overlay.OverlaySourceDir(overlayName) if !util.IsDir(overlaySourceDir) { - err := errors.New("Overlay does not exist") - wwlog.Error("%s: %s", err, overlayName) + err := errors.New("overlay does not exist") return err } overlayFile := path.Join(overlaySourceDir, fileName) if !util.IsFile(overlayFile) { - err := errors.New("File does not exist within overlay") - wwlog.Error("%s: %s:%s", err, overlayName, fileName) + err := errors.New("file does not exist within overlay") return err } if NodeName == "" { f, err := os.ReadFile(overlayFile) if err != nil { - wwlog.Error("Could not read file: %s", err) return err } wwlog.Output("%s", string(f)) } else { if !util.IsFile(overlayFile) { - err := errors.New("Not a file") - wwlog.Error("%s: %s:%s", err, overlayName, fileName) - return err - err := errors.New("Not a file") - wwlog.Error("%s: %s:%s", err, overlayName, fileName) + err := errors.New("not a file") return err } if filepath.Ext(overlayFile) != ".ww" { diff --git a/internal/pkg/node/datastructure.go b/internal/pkg/node/datastructure.go index 187e5e13..b1d0ff67 100644 --- a/internal/pkg/node/datastructure.go +++ b/internal/pkg/node/datastructure.go @@ -79,7 +79,7 @@ type KernelConf struct { type NetDevs struct { Type string `yaml:"type,omitempty" lopt:"type" sopt:"T" comment:"Set device type of given network"` - OnBoot bool `yaml:"onboot,omitempty" lopt:"onboot" comment:"Enable/disable network device (true/false)"` + Manual bool `yaml:"manual,omitempty" lopt:"manual" comment:"Enable/disable network device (true/false)"` Device string `yaml:"device,omitempty" lopt:"netdev" sopt:"N" comment:"Set the device for given network"` Hwaddr string `yaml:"hwaddr,omitempty" lopt:"hwaddr" sopt:"H" comment:"Set the device's HW address for given network" type:"MAC"` Ipaddr net.IP `yaml:"ipaddr,omitempty" comment:"IPv4 address in given network" sopt:"I" lopt:"ipaddr" type:"IP"` @@ -88,8 +88,8 @@ type NetDevs struct { Netmask net.IP `yaml:"netmask,omitempty" lopt:"netmask" sopt:"M" comment:"Set the networks netmask" type:"IP"` Gateway net.IP `yaml:"gateway,omitempty" lopt:"gateway" sopt:"G" comment:"Set the node's network device gateway" type:"IP"` MTU string `yaml:"mtu,omitempty" lopt:"mtu" comment:"Set the mtu" type:"uint"` - primary bool `yaml:"primary,omitempty"` Tags map[string]string `yaml:"tags,omitempty"` + primary bool } /* diff --git a/internal/pkg/overlay/datastructure.go b/internal/pkg/overlay/datastructure.go index e807dae9..8a996023 100644 --- a/internal/pkg/overlay/datastructure.go +++ b/internal/pkg/overlay/datastructure.go @@ -72,6 +72,7 @@ func InitStruct(nodeData node.NodeConf) (TemplateStruct, error) { // init some convenience vars tstruct.Id = nodeData.Id() tstruct.Hostname = nodeData.Id() + tstruct.Container = nodeData.ContainerName // Backwards compatibility for templates using "Keys" tstruct.AllNodes = allNodes dt := time.Now() diff --git a/overlays/NetworkManager/internal/networkmanager_test.go b/overlays/NetworkManager/internal/networkmanager_test.go index 9a5d9b19..581006d2 100644 --- a/overlays/NetworkManager/internal/networkmanager_test.go +++ b/overlays/NetworkManager/internal/networkmanager_test.go @@ -71,7 +71,6 @@ Filename: warewulf-default.conf [connection] id=default interface-name=wwnet0 - type=ethernet autoconnect=true [ethernet] @@ -93,7 +92,6 @@ Filename: warewulf-secondary.conf [connection] id=secondary interface-name=wwnet1 - type=ethernet autoconnect=true [ethernet] diff --git a/overlays/NetworkManager/internal/nodes.conf b/overlays/NetworkManager/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/NetworkManager/internal/nodes.conf +++ b/overlays/NetworkManager/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 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 cb7e2bc6..e8d1db84 100644 --- a/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww +++ b/overlays/NetworkManager/rootfs/etc/NetworkManager/system-connections/ww4-managed.ww @@ -5,21 +5,18 @@ [connection] id={{ $connection_id }} interface-name={{ $netdev.Device }} -{{ if $netdev.Type -}} {{ if eq $netdev.Type "bond-slave" -}} slave-type=bond {{- $conn := split "_" $connection_id }} {{- $master := $conn._0 }} master={{ $master }} type=ethernet -{{ else }} -type={{ $netdev.Type }} -autoconnect={{ $netdev.OnBoot }} +{{ else -}} +type={{if $netdev.Type}}{{ $netdev.Type }}{{ else }}ethernet{{end}} +autoconnect={{ if $netdev.Manual }}false{{else}}true{{end}} {{ end -}} -{{ end -}} - {{ if $netdev.Hwaddr -}} -{{ if eq $netdev.Type "ethernet" -}} +{{ if or (eq $netdev.Type "ethernet") (not $netdev.Type ) -}} [ethernet] mac-address={{ $netdev.Hwaddr }} {{ if $netdev.MTU -}} @@ -34,14 +31,12 @@ mtu={{ $netdev.MTU }} {{ if $netdev.MTU -}} mtu={{ $netdev.MTU }} {{ end -}} - [bond] downdelay=0 miimon=100 mode=802.3ad xmit_hash_policy=layer2+3 updelay=0 - {{ end -}} {{ if eq $netdev.Type "infiniband" -}} diff --git a/overlays/debian.interfaces/internal/nodes.conf b/overlays/debian.interfaces/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/debian.interfaces/internal/nodes.conf +++ b/overlays/debian.interfaces/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww b/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww index 77ec1fdd..f0559472 100644 --- a/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww +++ b/overlays/debian.interfaces/rootfs/etc/network/interfaces.d/default.ww @@ -2,14 +2,14 @@ {{- $filename := print $devname }} {{- file $filename }} # This file is autogenerated by warewulf -{{ if $netdev.OnBoot.GetB -}} -auto {{$netdev.Device.Get}} +{{ if not $netdev.Manual -}} +auto {{$netdev.Device}} {{ end -}} -allow-hotplug {{$netdev.Device.Get}} -iface {{$netdev.Device.Get}} inet static - address {{$netdev.Ipaddr.Get}} - netmask {{$netdev.Netmask.Get}} - gateway {{$netdev.Gateway.Get}} - mtu {{$netdev.MTU.Get}} - up ifmetric {{$netdev.Device.Get}} 30 +allow-hotplug {{$netdev.Device}} +iface {{$netdev.Device}} inet static + address {{$netdev.Ipaddr}} + netmask {{$netdev.Netmask}} + {{ if $netdev.Gateway }}gateway {{$netdev.Gateway}}{{end}} + mtu {{$netdev.MTU}} + up ifmetric {{$netdev.Device}} 30 {{- end}} diff --git a/overlays/debug/internal/debug_test.go b/overlays/debug/internal/debug_test.go index 44c502d1..fb265b12 100644 --- a/overlays/debug/internal/debug_test.go +++ b/overlays/debug/internal/debug_test.go @@ -83,10 +83,8 @@ data from other structures. - Root: initramfs - AssetKey: - Discoverable: -- Profiles: empty +- Profiles: default - Tags: -- TagsDel: -- Keys: - Kernel: - Version: - Override: @@ -101,39 +99,32 @@ data from other structures. - Interface: - Write: true - Tags: - - TagsDel: - NetDevs[default]: - - Type: ethernet - - OnBoot: true + - Type: + - Manual: false - Device: wwnet0 - Hwaddr: e6:92:39:49:7b:03 - Ipaddr: 192.168.3.21 - - IpCIDR: 192.168.3.21/24 - - Ipaddr6: - - Prefix: + - Ipaddr6: + - Prefix: - Netmask: 255.255.255.0 - Gateway: 192.168.3.1 - MTU: - - Primary: true - - Default: + - Primary: false - Tags: - - TagsDel: - NetDevs[secondary]: - - Type: ethernet - - OnBoot: true + - Type: + - Manual: false - Device: wwnet1 - Hwaddr: 9a:77:29:73:14:f1 - Ipaddr: 192.168.3.22 - - IpCIDR: 192.168.3.22/24 - - Ipaddr6: - - Prefix: + - Ipaddr6: + - Prefix: - Netmask: 255.255.255.0 - Gateway: 192.168.3.1 - MTU: - - Primary: - - Default: + - Primary: false - Tags: DNS1=8.8.8.8 DNS2=8.8.4.4 - - TagsDel: ## Build variables @@ -151,7 +142,7 @@ data from other structures. - Ipaddr6: - Netmask: - Network: -- NetworkCIDR: +- NetworkCIDR: - Ipv6: false @@ -198,13 +189,13 @@ data from other structures. - ClusterName: - ContainerName: rockylinux-9 - Ipxe: default - - RuntimeOverlay: hosts - - SystemOverlay: wwinit + - RuntimeOverlay: [hosts ssh.authorized_keys syncuser] + - SystemOverlay: [wwinit wwclient fstab hostname ssh.host_keys issue resolv udev.netname systemd.netname ifcfg NetworkManager debian.interfaces wicked ignition] - Root: initramfs - Discoverable: - Init: /sbin/init - AssetKey: - - Profiles: empty + - Profiles: [default] - Tags: - Kernel - Override: @@ -220,32 +211,32 @@ data from other structures. - Write: true - Tags: - NetDevs[default]: - - Type: ethernet - - OnBoot: true + - Type: + - Manual: false - Device: wwnet0 - Hwaddr: e6:92:39:49:7b:03 - Ipaddr: 192.168.3.21 - - Ipaddr6: - - IpCIDR: - - Prefix: + - IpCIDR: 192.168.3.21/24 + - Ipaddr6: + - Prefix: - Netmask: 255.255.255.0 - Gateway: 192.168.3.1 - MTU: - Primary: true - Tags: - NetDevs[secondary]: - - Type: ethernet - - OnBoot: true + - Type: + - Manual: false - Device: wwnet1 - Hwaddr: 9a:77:29:73:14:f1 - Ipaddr: 192.168.3.22 - - Ipaddr6: - - IpCIDR: - - Prefix: + - IpCIDR: 192.168.3.22/24 + - Ipaddr6: + - Prefix: - Netmask: 255.255.255.0 - Gateway: 192.168.3.1 - MTU: - - Primary: + - Primary: false - Tags: DNS1=8.8.8.8 DNS2=8.8.4.4 - AllNodes[1]: - Id: node2 @@ -253,36 +244,36 @@ data from other structures. - ClusterName: - ContainerName: - Ipxe: default - - RuntimeOverlay: hosts - - SystemOverlay: wwinit + - RuntimeOverlay: [hosts ssh.authorized_keys syncuser] + - SystemOverlay: [wwinit wwclient fstab hostname ssh.host_keys issue resolv udev.netname systemd.netname ifcfg NetworkManager debian.interfaces wicked ignition] - Root: initramfs - Discoverable: - Init: /sbin/init - AssetKey: - - Profiles: empty + - Profiles: [default] - Tags: - Kernel - Override: - Args: quiet crashkernel=no vga=791 net.naming-scheme=v238 - Ipmi: - - Ipaddr: - - Netmask: + - Ipaddr: + - Netmask: - Port: - - Gateway: + - Gateway: - UserName: - Password: - Interface: - Write: - Tags: - NetDevs[default]: - - Type: ethernet - - OnBoot: true + - Type: + - Manual: false - Device: wwnet0 - Hwaddr: e6:92:39:49:7b:04 - Ipaddr: 192.168.3.23 - - Ipaddr6: - - IpCIDR: - - Prefix: + - IpCIDR: 192.168.3.23/24 + - Ipaddr6: + - Prefix: - Netmask: 255.255.255.0 - Gateway: 192.168.3.1 - MTU: diff --git a/overlays/debug/internal/nodes.conf b/overlays/debug/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/debug/internal/nodes.conf +++ b/overlays/debug/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/debug/rootfs/warewulf/template-variables.md.ww b/overlays/debug/rootfs/warewulf/template-variables.md.ww index 2bdbeb2e..fa051f36 100644 --- a/overlays/debug/rootfs/warewulf/template-variables.md.ww +++ b/overlays/debug/rootfs/warewulf/template-variables.md.ww @@ -27,8 +27,6 @@ data from other structures. - Discoverable: {{ .Discoverable }} - Profiles: {{ range $index, $value := .Profiles }}{{ if $index }},{{ end }}{{ $value }}{{ end }} - Tags: {{ range $key, $value := .Tags }}{{ $key }}={{ $value }} {{ end }} -- TagsDel: {{ range $key, $value := .TagsDel }}{{ $key }}={{ $value }} {{ end }} -- Keys: {{ range $key, $value := .Keys }}{{ $key }}={{ $value }} {{ end }} - Kernel: - Version: {{ .Kernel.Version }} - Override: {{ .Kernel.Override }} @@ -43,11 +41,10 @@ data from other structures. - Interface: {{ .Ipmi.Interface }} - Write: {{ .Ipmi.Write }} - Tags: {{ range $key, $value := .Ipmi.Tags }}{{ $key }}={{ $value }} {{ end }} - - TagsDel: {{ range $key, $value := .Ipmi.TagsDel }}{{ $key }}={{ $value }} {{ end }} {{- range $index, $netdev := .NetDevs }} - NetDevs[{{ $index }}]: - Type: {{ $netdev.Type }} - - OnBoot: {{ $netdev.OnBoot }} + - Manual: {{ $netdev.Manual }} - Device: {{ $netdev.Device }} - Hwaddr: {{ $netdev.Hwaddr }} - Ipaddr: {{ $netdev.Ipaddr }} @@ -57,9 +54,7 @@ data from other structures. - Gateway: {{ $netdev.Gateway }} - MTU: {{ $netdev.MTU }} - Primary: {{ $netdev.Primary }} - - Default: {{ $netdev.Default }} - Tags: {{ range $key, $value := $netdev.Tags }}{{ $key }}={{ $value }} {{ end }} - - TagsDel: {{ range $key, $value := $netdev.TagsDel }}{{ $key }}={{ $value }} {{ end }} {{- end }} @@ -130,45 +125,46 @@ data from other structures. {{ range $index, $node := .AllNodes -}} - AllNodes[{{ $index }}]: - - Id: {{ $node.Id.Get }} - - Comment: {{ $node.Comment.Get }} - - ClusterName: {{ $node.ClusterName.Get }} - - ContainerName: {{ $node.ContainerName.Get }} - - Ipxe: {{ $node.Ipxe.Get }} - - RuntimeOverlay: {{ $node.RuntimeOverlay.Get }} - - SystemOverlay: {{ $node.SystemOverlay.Get }} - - Root: {{ $node.Root.Get }} - - Discoverable: {{ $node.Discoverable.Get }} - - Init: {{ $node.Init.Get }} - - AssetKey: {{ $node.AssetKey.Get }} - - Profiles: {{ $node.Profiles.Get }} - - Tags: {{ range $key, $value := $node.Tags }}{{ $key }}={{ $value.Get }} {{ end }} + - Id: {{ $node.Id }} + - Comment: {{ $node.Comment }} + - ClusterName: {{ $node.ClusterName }} + - ContainerName: {{ $node.ContainerName }} + - Ipxe: {{ $node.Ipxe }} + - RuntimeOverlay: {{ $node.RuntimeOverlay }} + - SystemOverlay: {{ $node.SystemOverlay }} + - Root: {{ $node.Root }} + - Discoverable: {{ $node.Discoverable }} + - Init: {{ $node.Init }} + - AssetKey: {{ $node.AssetKey }} + - Profiles: {{ $node.Profiles }} + - Tags: {{ range $key, $value := $node.Tags }}{{ $key }}={{ $value }} {{ end }} - Kernel - - Override: {{ $node.Kernel.Override.Get }} - - Args: {{ $node.Kernel.Args.Get }} + - Override: {{ $node.Kernel.Override }} + - Args: {{ $node.Kernel.Args }} - Ipmi: - - Ipaddr: {{ $node.Ipmi.Ipaddr.Get }} - - Netmask: {{ $node.Ipmi.Netmask.Get }} - - Port: {{ $node.Ipmi.Port.Get }} - - Gateway: {{ $node.Ipmi.Gateway.Get }} - - UserName: {{ $node.Ipmi.UserName.Get }} - - Password: {{ $node.Ipmi.Password.Get }} - - Interface: {{ $node.Ipmi.Interface.Get }} - - Write: {{ $node.Ipmi.Write.Get }} - - Tags: {{ range $key, $value := $node.Ipmi.Tags }}{{ $key }}={{ $value.Get }} {{ end }} + - Ipaddr: {{ $node.Ipmi.Ipaddr }} + - Netmask: {{ $node.Ipmi.Netmask }} + - Port: {{ $node.Ipmi.Port }} + - Gateway: {{ $node.Ipmi.Gateway }} + - UserName: {{ $node.Ipmi.UserName }} + - Password: {{ $node.Ipmi.Password }} + - Interface: {{ $node.Ipmi.Interface }} + - Write: {{ $node.Ipmi.Write }} + - Tags: {{ range $key, $value := $node.Ipmi.Tags }}{{ $key }}={{ $value }} {{ end }} {{- range $index, $netdev := $node.NetDevs }} - NetDevs[{{ $index }}]: - - Type: {{ $netdev.Type.Get }} - - OnBoot: {{ $netdev.OnBoot.Get }} - - Device: {{ $netdev.Device.Get }} - - Hwaddr: {{ $netdev.Hwaddr.Get }} - - Ipaddr: {{ $netdev.Ipaddr.Get }} - - Ipaddr6: {{ $netdev.Ipaddr6.Get }} - - Prefix: {{ $netdev.Prefix.Get }} - - Netmask: {{ $netdev.Netmask.Get }} - - Gateway: {{ $netdev.Gateway.Get }} - - MTU: {{ $netdev.MTU.Get }} - - Primary: {{ $netdev.Primary.Get }} - - Tags: {{ range $key, $value := $netdev.Tags }}{{ $key }}={{ $value.Get }} {{ end }} + - Type: {{ $netdev.Type }} + - Manual: {{ $netdev.Manual }} + - Device: {{ $netdev.Device }} + - Hwaddr: {{ $netdev.Hwaddr }} + - Ipaddr: {{ $netdev.Ipaddr }} + - IpCIDR: {{ $netdev.IpCIDR }} + - Ipaddr6: {{ $netdev.Ipaddr6 }} + - Prefix: {{ $netdev.Prefix }} + - Netmask: {{ $netdev.Netmask }} + - Gateway: {{ $netdev.Gateway }} + - MTU: {{ $netdev.MTU }} + - Primary: {{ $netdev.Primary }} + - Tags: {{ range $key, $value := $netdev.Tags }}{{ $key }}={{ $value }} {{ end }} {{- end }} {{ end }} diff --git a/overlays/fstab/internal/nodes.conf b/overlays/fstab/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/fstab/internal/nodes.conf +++ b/overlays/fstab/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/host/internal/nodes.conf b/overlays/host/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/host/internal/nodes.conf +++ b/overlays/host/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/host/rootfs/etc/hosts.ww b/overlays/host/rootfs/etc/hosts.ww index adda3c05..5ffa92e7 100644 --- a/overlays/host/rootfs/etc/hosts.ww +++ b/overlays/host/rootfs/etc/hosts.ww @@ -5,10 +5,10 @@ # Warewulf Server {{$.Ipaddr}} {{$.BuildHost}} warewulf -{{- range $node := $.AllNodes}} {{/* for each node */}} +{{- range $node := $.AllNodes}}{{/* for each node */}} # Entry for {{$node.Id}} -{{- range $devname, $netdev := $node.NetDevs}} {{/* for each network device on the node */}} -{{- if $netdev.Ipaddr}} {{/* if we have an ip address on this network device */}} +{{- range $devname, $netdev := $node.NetDevs}}{{/* for each network device on the node */}} +{{- if $netdev.Ipaddr}}{{/* if we have an ip address on this network device */}} {{- /* emit the node name as hostname if this is the primary */}} {{$netdev.Ipaddr}} {{if $netdev.Primary}}{{$node.Id}}{{end}} {{$node.Id}}-{{$devname}} {{if $netdev.Device}}{{$node.Id}}-{{$netdev.Device}}{{end}} {{- end }}{{/* if ip */}} diff --git a/overlays/hostname/internal/nodes.conf b/overlays/hostname/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/hostname/internal/nodes.conf +++ b/overlays/hostname/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/hosts/internal/nodes.conf b/overlays/hosts/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/hosts/internal/nodes.conf +++ b/overlays/hosts/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/hosts/rootfs/etc/hosts.ww b/overlays/hosts/rootfs/etc/hosts.ww index 3e20a3b7..415b1d98 100644 --- a/overlays/hosts/rootfs/etc/hosts.ww +++ b/overlays/hosts/rootfs/etc/hosts.ww @@ -5,10 +5,10 @@ {{$.Ipaddr}} {{$.BuildHost}} warewulf {{- range $node := $.AllNodes }} -# Entry for {{$node.Id.Get}} +# Entry for {{$node.Id}} {{- range $devname, $netdev := $node.NetDevs }} -{{- if $netdev.Ipaddr.Defined }} -{{$netdev.Ipaddr.Get}} {{if $netdev.Primary.GetB}}{{$node.Id.Get}}{{end}} {{$node.Id.Get}}-{{$devname}} {{if $netdev.Device.Defined}}{{$node.Id.Get}}-{{$netdev.Device.Get}}{{end}} +{{- if $netdev.Ipaddr}} +{{$netdev.Ipaddr}} {{if $netdev.Primary}}{{$node.Id}}{{end}} {{$node.Id}}-{{$devname}} {{if $netdev.Device}}{{$node.Id}}-{{$netdev.Device}}{{end}} {{- end }} {{- end }} {{- end }} diff --git a/overlays/ifcfg/internal/ifcfg_test.go b/overlays/ifcfg/internal/ifcfg_test.go index c0a479b4..01542954 100644 --- a/overlays/ifcfg/internal/ifcfg_test.go +++ b/overlays/ifcfg/internal/ifcfg_test.go @@ -66,7 +66,6 @@ IPADDR=192.168.3.21 NETMASK=255.255.255.0 GATEWAY=192.168.3.1 HWADDR=e6:92:39:49:7b:03 -TYPE=ethernet ONBOOT=true IPV6INIT=yes IPV6_AUTOCONF=yes @@ -85,7 +84,6 @@ IPADDR=192.168.3.22 NETMASK=255.255.255.0 GATEWAY=192.168.3.1 HWADDR=9a:77:29:73:14:f1 -TYPE=ethernet ONBOOT=true IPV6INIT=yes IPV6_AUTOCONF=yes diff --git a/overlays/ifcfg/internal/nodes.conf b/overlays/ifcfg/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/ifcfg/internal/nodes.conf +++ b/overlays/ifcfg/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww b/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww index b841eb4f..997c84a3 100644 --- a/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww +++ b/overlays/ifcfg/rootfs/etc/sysconfig/network-scripts/ifcfg.ww @@ -2,7 +2,11 @@ {{- $filename := print "ifcfg-" $devname ".conf" }} {{- file $filename }} # This file is autogenerated by warewulf +{{ if $netdev.Type -}} TYPE={{ $netdev.Type }} +{{ else -}} +TYPE=ethernet +{{ end -}} DEVICE={{ $netdev.Device }} NAME={{ $devname }} {{ if $netdev.MTU -}} @@ -18,11 +22,10 @@ GATEWAY={{ $netdev.Gateway }} {{ if $netdev.Hwaddr -}} HWADDR={{ $netdev.Hwaddr }} {{ end -}} -{{ if $netdev.Type -}} -TYPE={{ $netdev.Type }} -{{ end -}} -{{ if $netdev.OnBoot -}} -ONBOOT={{ $netdev.OnBoot }} +{{ if $netdev.Manual -}} +ONBOOT=false +{{ else -}} +ONBOOT=true {{ end -}} IPV6INIT=yes IPV6_AUTOCONF=yes diff --git a/overlays/ignition/internal/nodes.conf b/overlays/ignition/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/ignition/internal/nodes.conf +++ b/overlays/ignition/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/issue/internal/issue_test.go b/overlays/issue/internal/issue_test.go index 1da3f92f..7a467e29 100644 --- a/overlays/issue/internal/issue_test.go +++ b/overlays/issue/internal/issue_test.go @@ -56,9 +56,9 @@ Kernelargs: quiet crashkernel=no vga=791 net.naming-scheme=v238 Network: default: wwnet0 - default: 192.168.3.21/24 + default: \4{wwnet0} default: e6:92:39:49:7b:03 secondary: wwnet1 - secondary: 192.168.3.22/24 + secondary: \4{wwnet1} secondary: 9a:77:29:73:14:f1 ` diff --git a/overlays/issue/internal/nodes.conf b/overlays/issue/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/issue/internal/nodes.conf +++ b/overlays/issue/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/resolv/internal/nodes.conf b/overlays/resolv/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/resolv/internal/nodes.conf +++ b/overlays/resolv/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/ssh.authorized_keys/internal/nodes.conf b/overlays/ssh.authorized_keys/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/ssh.authorized_keys/internal/nodes.conf +++ b/overlays/ssh.authorized_keys/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/ssh.host_keys/internal/nodes.conf b/overlays/ssh.host_keys/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/ssh.host_keys/internal/nodes.conf +++ b/overlays/ssh.host_keys/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/syncuser/internal/nodes.conf b/overlays/syncuser/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/syncuser/internal/nodes.conf +++ b/overlays/syncuser/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/systemd.netname/internal/nodes.conf b/overlays/systemd.netname/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/systemd.netname/internal/nodes.conf +++ b/overlays/systemd.netname/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/udev.netname/internal/nodes.conf b/overlays/udev.netname/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/udev.netname/internal/nodes.conf +++ b/overlays/udev.netname/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/wicked/internal/nodes.conf b/overlays/wicked/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/wicked/internal/nodes.conf +++ b/overlays/wicked/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww b/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww index db9d6865..54107a56 100644 --- a/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww +++ b/overlays/wicked/rootfs/etc/wicked/ifconfig/ifcfg.xml.ww @@ -6,15 +6,17 @@ This file is autogenerated by warewulf --> - {{$netdev.Device.Get}} - {{ if $netdev.Type.Get -}} - {{ $netdev.Type.Get }} + {{$netdev.Device}} + {{ if $netdev.Type -}} + {{ $netdev.Type }} + {{ else -}} + ethernet {{ end -}} - {{ if $netdev.MTU.Get -}} - {{ $netdev.MTU.Get }} + {{ if $netdev.MTU -}} + {{ $netdev.MTU }} {{ end -}} - {{ if $netdev.OnBoot.GetB -}}boot{{ else }}manual{{end}} + {{ if $netdev.Manual -}}manual{{ else }}boot{{end}} @@ -26,10 +28,10 @@ This file is autogenerated by warewulf
{{$netdev.IpCIDR}}
-{{ if $netdev.Gateway.Get -}} +{{ if $netdev.Gateway -}} - {{$netdev.Gateway.Get}} + {{$netdev.Gateway}} {{ end -}} @@ -39,10 +41,10 @@ This file is autogenerated by warewulf prefer-public false -{{ if $netdev.Ipaddr6.Get -}} +{{ if $netdev.Ipaddr6 -}}
- {{ $netdev.Ipaddr6.Get }} + {{ $netdev.Ipaddr6 }}
{{ end -}} diff --git a/overlays/wwclient/internal/nodes.conf b/overlays/wwclient/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/wwclient/internal/nodes.conf +++ b/overlays/wwclient/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0 diff --git a/overlays/wwinit/internal/nodes.conf b/overlays/wwinit/internal/nodes.conf index bd740dee..e9b04d07 100644 --- a/overlays/wwinit/internal/nodes.conf +++ b/overlays/wwinit/internal/nodes.conf @@ -1,10 +1,34 @@ WW_INTERNAL: 45 nodeprofiles: - empty: {} + default: + runtime overlay: + - hosts + - ssh.authorized_keys + - syncuser + system overlay: + - wwinit + - wwclient + - fstab + - hostname + - ssh.host_keys + - issue + - resolv + - udev.netname + - systemd.netname + - ifcfg + - NetworkManager + - debian.interfaces + - wicked + - ignition + kernel: + args: quiet crashkernel=no vga=791 net.naming-scheme=v238 + init: /sbin/init + root: initramfs + ipxe template: default nodes: node1: profiles: - - empty + - default container name: rockylinux-9 network devices: default: @@ -28,13 +52,13 @@ nodes: ipaddr: 192.168.4.21 netmask: 255.255.255.0 gateway: 192.168.4.1 - write: "true" + write: true disks: /dev/vda: - wipe_table: "true" + wipe_table: true partitions: scratch: - should_exist: "true" + should_exist: true swap: number: "1" size_mib: "1024" @@ -42,13 +66,13 @@ nodes: /dev/disk/by-partlabel/scratch: format: btrfs path: /scratch - wipe_filesystem: "true" + wipe_filesystem: true /dev/disk/by-partlabel/swap: format: swap path: swap node2: profiles: - - empty + - default network devices: default: device: wwnet0