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: