Before #1628, all default constructors for nodes and profiles attempted to
construct objects with pre-populated empty fields (e.g., for pointers to member
structs and for collections that default to nil). Changes to MergeNode in #1629
changed this behavior intentionally to simplify the generation of minimal json;
but this had the unintended side-effect of breaking existing templates that may
now encounter a nil pointer, particularly when accessing member structs.
Introduced here, the Expand() methods on Node and Profile are now responsible
for populating such fields, and Node.Expand() is now called during template
processing.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- Make Resources an `interface{}` to support arbitrary yaml
- Remove `wwctl resource` as incompatible with arbitrary yaml
- Revert changes to host overlay templates
- Remove NFS mount options from warewulf.conf
- Replace NFS support / resource prefix with "fstab" resource
- Move resources to profiles
- Migrate warewulf.conf mounts to nodes.conf with `wwctl upgrade`
- Add documentation
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- Benchmarks overlay build in an environment with 1000 nodes
- Updates testenv to support both benchmarks and tests
To execute:
```
go test github.com/warewulf/warewulf/internal/app/wwctl/overlay/build -bench Benchmark_Overlay_Build
```
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
We've been shipping a warewulf.conf that defines the warewulfd port as
9873, and a firewalld service that uses this port as well; but the
default value in the YAML data-structure has been 9983.
This changes the default port to 9873 to match the configuration we've
been shipping, and removes the port from the initial configuration file
(to use the default value).
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- Closes#987
To make the overlays testable in isolation, and after discussion with
the TSC, removed host/time/source from overlay files.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- Closes#1093
- Extends #822
Restores the acceptable use of the initramfs options to avoid deprecation in a
v4.5.x maintenance release.
Moves mounting of kernel file systems earlier in the script so that we
can use the same reboot pattern for all error conditions.
Flattens nested if/else logic.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
- Closes#1093
- Show rootfs type on-screen during boot.
- Fix logic flow for deciding to pivot or not.
- Add Informational message about 'initramfs' option.
- Allow unset WWROOT to continue to wwinit.
Signed-off-by: Adam Michel <elfurbe@furbism.com>
- Disable dynamic pool when using static dhcp
- Populate configuration of non-primary interfaces for static dhcp
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
initramfs uses tmpfs regardless of whether root=tmpfs in Warewulf. As
such, 90-selinux needs to be updated to detect the actual provenance of
/, rather than the configured setting.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
dracut.ipxe boots an initramfs detected in the container image. This
required a few small changes to warewulfd and the wwinit overlay to
accommodate the dracut initramfs configuring the network interface
before wwinit:
- Include .NetDevs in the ipxe configuration template, so that dracut
can configure interfaces with the correct names.
- Configure NetworkManager to not keep the initramfs configuration, in
stead applying the configuration found by wwinit.
Signed-off-by: Jonathon Anderson <janderson@ciq.com>