From b05fa4157ad7e36a01dc0fa982c2c5ddb4b51890 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Fri, 14 Feb 2025 20:30:46 -0700 Subject: [PATCH 1/2] Added fstab mounts for `/home` and `/opt` to initial default profile - Closes: #1744 Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 1 + etc/nodes.conf | 10 ++++++++++ internal/pkg/upgrade/node.go | 28 ++++++++++++++++++++++++++++ internal/pkg/upgrade/node_test.go | 22 ++++++++++++++++++++++ 4 files changed, 61 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02de4550..ecbd249c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Added support for a DNSSEARCH netdev tag in network configuration overlays. #1256 - Added `WW_HISTFILE` to control shell history location during `wwctl image shell`. #1732 - Added target help in Makefile. #1740 +- Added fstab mounts for `/home` and `/opt` to initial default profile. #1744 ### Changed diff --git a/etc/nodes.conf b/etc/nodes.conf index c799c866..c5b9487f 100644 --- a/etc/nodes.conf +++ b/etc/nodes.conf @@ -28,4 +28,14 @@ nodeprofiles: ipxe template: default ipmi: template: ipmitool.tmpl + resources: + fstab: + - spec: warewulf:/home + file: /home + vfstype: nfs + mntops: defaults,nofail + - spec: warewulf:/opt + file: /opt + vfstype: nfs + mntops: defaults,noauto,nofail,ro nodes: {} diff --git a/internal/pkg/upgrade/node.go b/internal/pkg/upgrade/node.go index 8ca0b287..99580db0 100644 --- a/internal/pkg/upgrade/node.go +++ b/internal/pkg/upgrade/node.go @@ -93,6 +93,25 @@ func (legacy *NodesYaml) Upgrade(addDefaults bool, replaceOverlays bool, warewul if defaultProfile.Ipxe == "" { defaultProfile.Ipxe = "default" } + if _, ok := defaultProfile.Resources["fstab"]; !ok { + if defaultProfile.Resources == nil { + defaultProfile.Resources = make(map[string]node.Resource) + } + defaultProfile.Resources["fstab"] = []map[string]string{ + { + "spec": "warewulf:/home", + "file": "/home", + "vfstype": "nfs", + "mntops": "defaults,nofail", + }, + { + "spec": "warewulf:/opt", + "file": "/opt", + "vfstype": "nfs", + "mntops": "defaults,noauto,nofail,ro", + }, + } + } } if warewulfconf != nil && warewulfconf.NFS != nil { var fstab []map[string]string @@ -339,11 +358,15 @@ type Profile struct { SystemOverlay interface{} `yaml:"system overlay,omitempty"` Tags map[string]string `yaml:"tags,omitempty"` TagsDel []string `yaml:"tagsdel,omitempty"` + Resources map[string]Resource `yaml:"resources,omitempty"` } +type Resource interface{} + func (legacy *Profile) Upgrade(addDefaults bool, replaceOverlays bool) (upgraded *node.Profile) { upgraded = new(node.Profile) upgraded.Tags = make(map[string]string) + upgraded.Resources = make(map[string]node.Resource) upgraded.Disks = make(map[string]*node.Disk) upgraded.FileSystems = make(map[string]*node.FileSystem) upgraded.Kernel = new(node.KernelConf) @@ -491,6 +514,11 @@ func (legacy *Profile) Upgrade(addDefaults bool, replaceOverlays bool) (upgraded for _, tag := range legacy.TagsDel { delete(upgraded.Tags, tag) } + if legacy.Resources != nil { + for key, value := range legacy.Resources { + upgraded.Resources[key] = value + } + } return } diff --git a/internal/pkg/upgrade/node_test.go b/internal/pkg/upgrade/node_test.go index 1fb10c8c..7cb32a2a 100644 --- a/internal/pkg/upgrade/node_test.go +++ b/internal/pkg/upgrade/node_test.go @@ -552,6 +552,16 @@ nodeprofiles: - net.naming-scheme=v238 init: /sbin/init root: initramfs + resources: + fstab: + - spec: warewulf:/home + file: /home + vfstype: nfs + mntops: defaults,nofail + - spec: warewulf:/opt + file: /opt + vfstype: nfs + mntops: defaults,noauto,nofail,ro nodes: n1: profiles: @@ -579,6 +589,12 @@ nodeprofiles: - udev.netname - systemd.netname - NetworkManager + resources: + fstab: + - spec: warewulf:/scratch + file: /scratch + vfstype: nfs + mntops: defaults,nofail custom: {} nodes: n1: @@ -616,6 +632,12 @@ nodeprofiles: - net.naming-scheme=v238 init: /sbin/init root: initramfs + resources: + fstab: + - spec: warewulf:/scratch + file: /scratch + vfstype: nfs + mntops: defaults,nofail nodes: n1: profiles: From f2273fcd4af05c0ea1df534a09cc59fd8e2cc802 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Fri, 14 Feb 2025 20:45:39 -0700 Subject: [PATCH 2/2] Removed check for "discoverable" profiles during `wwctl upgrade nodes` Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 1 + internal/pkg/upgrade/node.go | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecbd249c..77f6779e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Remove redundant `wwctl genconfig completions` command. #1716 - Remove syncuser warning messages in `wwctl` that assume its use. #1321 - Remove syncuser from the list of default runtime overlays. #1322 +- Removed check for "discoverable" profiles during `wwctl upgrade nodes`. ## v4.6.0rc2, 2025-02-07 diff --git a/internal/pkg/upgrade/node.go b/internal/pkg/upgrade/node.go index 99580db0..0fb1522f 100644 --- a/internal/pkg/upgrade/node.go +++ b/internal/pkg/upgrade/node.go @@ -158,7 +158,8 @@ func (legacy *NodesYaml) Upgrade(addDefaults bool, replaceOverlays bool, warewul } type Node struct { - Profile `yaml:"-,inline"` + Discoverable string `yaml:"discoverable,omitempty"` + Profile `yaml:"-,inline"` } func (legacy *Node) Upgrade(addDefaults bool, replaceOverlays bool) (upgraded *node.Node) { @@ -330,7 +331,6 @@ type Profile struct { ImageName string `yaml:"image name,omitempty"` ContainerName string `yaml:"container name,omitempty"` Disabled string `yaml:"disabled,omitempty"` - Discoverable string `yaml:"discoverable,omitempty"` Disks map[string]*Disk `yaml:"disks,omitempty"` FileSystems map[string]*FileSystem `yaml:"filesystems,omitempty"` Init string `yaml:"init,omitempty"` @@ -383,9 +383,6 @@ func (legacy *Profile) Upgrade(addDefaults bool, replaceOverlays bool) (upgraded if legacy.Disabled != "" { logIgnore("Disabled", legacy.Disabled, "obsolete") } - if legacy.Discoverable != "" { - logIgnore("Discoverable", legacy.Discoverable, "invalid for profiles") - } if legacy.Disks != nil { for name, disk := range legacy.Disks { upgraded.Disks[name] = disk.Upgrade()