Release v4.6.1

- Back-port previous GitHub release notes to `.github/releases/`
- Fix SUSE and Rocky Linux 8 builds

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
Jonathon Anderson
2025-04-03 20:59:32 -06:00
parent b797b8eceb
commit 4a246e1b72
48 changed files with 1176 additions and 39 deletions

130
.github/releases/v4.5.0.md vendored Normal file
View File

@@ -0,0 +1,130 @@
The Warewulf project is pleased to announce the release of v4.5.0.
There's a lot in this release! Some of the more prominent changes are described here. For a more complete list of changes, see the [changelog](https://github.com/warewulf/warewulf/blob/v4.5.0/CHANGELOG.md).
## Testing, linting, and code formatting
In this release we have significantly increased our focus on testing. Code changes, especially bug fixes, are increasingly accompanied by additional tests in the automated test suite, and this test suite is automatically run by GitHub against every pull request and every release.
Use the `make test` target to run the test suite locally whenever you're doing development of your own.
Additional Makefile targets have also been introduced (or improved) to aid in overall maintenance of the code base:
- `make vet` uses standard golang heuristics to flag potential trouble
- `make fmt` applies a uniform source code format
## Documentation
Documentation continues to be an area for growth in Warewulf; but v4.5.x brings a number of improvements, some foundational:
- v4.5.x documentation is now published separately, in addition to documentation for the `main` branch.
- The quickstart guides have been updated, particularly combining the guides for Enterprise Linux (e.g., Rocky Linux, CentOS, and RHEL).
- We've added a guide for using Vagrant as a development environment.
There have been a few other specific additions: for example, there is now explicit documentation for how to configure multiple networks on a cluster node, and documentation for the "hostlist" syntax used by multiple `wwctl` commands.
Please [reach out via Slack](https://warewulf.org/help) if you'd be interested in helping to improve the project's documentation!
## Preview features
This release brings three new features in a preview status: they haven't quite had enough use, testing, integration, or documentation to be ready for production, but they represent interesting new capabilities for the project and we are eager to hear about your experiences!
### Initialize storage with Ignition
You can now initialize file systems, partitions, and disks on attached storage during node boot using the Ignition utility. This does not yet support provisioning the node image to local disk; but it can be used to provision storage to be mounted into the node image; for example, to initialize a swap partition, to format a scratch disk, or to prepare local storage for system logs.
[More information is available in the documentation.](https://warewulf.org/docs/v4.5.x/contents/disks.html)
### Use dnsmasq for dhcp and tftp
You can now use dnsmasq as a dhcp and tftp server in place of dhcpd and tftp-server. dnsmasq may become the default implementation in the future, unifying Warewulf on a single code-base for some of its down-stream services.
[More information is available in the documentation.](https://warewulf.org/docs/v4.5.x/contents/dnsmasq.html)
### Use GRUB as a node bootloader
You can now use GNU GRUB as a node bootloader in place of iPXE. Using GRUB introduces support for secureboot, and may also help us to overcome some limitations on node image size that we have encountered with the available releases of iPXE.
[More information is available in the documentation.](https://warewulf.org/docs/v4.5.x/contents/boot-management.html)
## wwctl commands and arguments
This release introduces multiple improvements to the `wwctl` utility.
### New commands
- `wwctl container copy` duplicates a container image to a new name, simplifying the process of testing a change in a test image.
- `wwctl container rename` adds support for renaming a container image in-place. (Nodes and profiles that refer to the old name must be updated separately.)
### New command options and flags
- `wwctl container syncuser --build` automatically (re)builds a container image after syncuser.
- `wwctl <node|profile> list --all` now only shows attributes that have a value set.
- `wwctl <node|profile> list --fullall` shows all attributes, including those which do not have a set value.
- `wwctl <node|profile> set --primarynet` sets the primary network device for the node, to be used for Warewulf provisioning.
- `wwctl <node|profile> set --ipmiescapechar` changes the `ipmitool` escape character.
- `wwctl overlay import --parents` automatically creates intermediate parent directories.
### Fixes and improvements
- `wwctl node edit` is now much more reliable, with multiple bugfixes and a general rewrite of its temporary file handling.
- `wwctl <node|profile> set --mtu` now correctly accepts valid MTU values.
- `wwctl container import` can now import a container archive using a relative path.
- `wwctl container import --force` no longer fails when replacing an existing container.
- `wwctl <node|profile> list` now supports a comma-separated list of nodes or profiles to filter the list to be displayed.
- `wwctl overlay` tab completion now supports completing files within an overlay.
## Overlays
Much of Warewulf's functionality is actually implemented using its bundled [overlays](https://warewulf.org/docs/v4.5.x/contents/overlays.html).
- Nodes that use multiple profiles now include overlays from all associated profiles, applied in the order that the profiles are listed on the node (last wins). Individual overlays can be excluded using a `~` prefix.
- Built overlay images are no longer erroneously / confusingly mixed with overlay sources by default. (For example, overlay sources may be included in `/var/lib/warewulf/overlays`, and overlay images will now be built in `/var/lib/warewulf/provision/overlays`.)
- Built overlay images are now named either `__SYSTEM__` or `__RUNTIME__` by default, replacing the previous format that was a comma-separated list of the contained overlays.
### wwinit
- Network configuration files now correctly configure MTU.
- Access to `/warewulf/config` is now restricted to root only.
- Configuration of network device names is now more reliable, particularly for nodes with multiple interfaces.
- `ONBOOT` is now correctly configured when using `ifcfg`.
- Bonded network interfaces can now be configured via NetworkManager.
### generic
- The primary interface hostname is now used as the canonical name in `/etc/hosts`.
- The Warewulf server FQDN is now used as the canonical name in `/etc/hosts`.
## Tags
Warewulf suports arbitrary key-value tags on nodes, network devices, and ipmi interfaces. These tags can then be used by built-in and custom overlays.
- Multiple bugs in the handling of node and profile tags have been fixed, making them a much more robust and reliable component of the Warewulf feature set.
- The `wwinit` overlay now uses `DNS` network tags (including `DNS1`, `DNS2`, etc.) to configure DNS resolution in network configuration files.
## Configuration
Warewulf is primarily configured using two configuration files, `warewulf.conf` and `nodes.conf`.
### warewulf.conf
- `ipaddr` now supports CIDR format, optionally inferring netmask and network.
- `paths` can be used to override compiled-in paths, e.g., for overlays, containers, and provisioned images.
- `tftp:ipxe` now supports full paths.
All available configuration options can be seen in context using `wwctl genconfig warewulfconf print`.
### nodes.conf
- `PrimaryNetDev` now defines a single network interface as primary for a node (or profile), deprecating the `primary` boolean on each individual network device.
## Build and packaging
Finally, a number of improvements have been made to the Warewulf build system, including its Makefile and RPM specfile.
- Warewulf no longer bundles an iPXE binary within its source code or packages, preferring, in stead, the version of iPXE included with the host disribution.
- A local, updated build of iPXE can still be built using an updated helper script at `scripts/build-ipxe.sh`. (Use `warwulf.conf:tftp:ipxe` to configure Warewulf to use a local iPXE build.)
- Warewulf can now be built on Fedora.
- New releases now include a build for Rocky Linux 9.
- New releases now include a build for OpenSUSE Leap 15.5 (replacing older versions of OpenSUSE Leap).
- A nightly release is now published on GitHub.