EL9 Quickstart (Rocky Linux and RHEL)
+Install Warewulf and dependencies
+sudo dnf groupinstall "Development Tools"
+sudo dnf install epel-release
+sudo dnf config-manager --set-enabled crb
+sudo dnf install golang tftp-server dhcp-server nfs-utils gpgpme-devel libassuan-devel
+
+git clone https://github.com/hpcng/warewulf.git
+cd warewulf
+make genconfig \
+ PREFIX=/usr \
+ BINDIR=/usr/bin \
+ SYSCONFDIR=/etc \
+ DATADIR=/usr/share \
+ LOCALSTATEDIR=/var/lib \
+ SHAREDSTATEDIR=/var/lib \
+ MANDIR=/usr/share/man \
+ INFODIR=/usr/share/info \
+ DOCDIR=/usr/share/doc \
+ SRVDIR=/var/lib \
+ TFTPDIR=/var/lib/tftpboot \
+ SYSTEMDDIR=/usr/lib/systemd/system \
+ BASHCOMPDIR=/etc/bash_completion.d/ \
+ FIREWALLDDIR=/usr/lib/firewalld/services \
+ WWCLIENTDIR=/warewulf
+make all
+sudo make install
+
Configure firewalld
+Restart firewalld to register the added service file, add the service +to the default zone, and reload.
+sudo systemctl restart firewalld
+sudo firewall-cmd --permanent --add-service warewulf
+sudo firewall-cmd --permanent --add-service nfs
+sudo firewall-cmd --permanent --add-service tftp
+sudo firewall-cmd --reload
+
Configure the controller
+Edit the file /etc/warewulf/warewulf.conf
and ensure that you’ve
+set the appropriate configuration parameters. Here are some of the
+defaults for reference assuming that 192.168.200.1
is the IP
+address of your cluster’s private network interface:
ipaddr: 192.168.200.1
+netmask: 255.255.255.0
+warewulf:
+ port: 9873
+ secure: false
+ update interval: 60
+dhcp:
+ enabled: true
+ range start: 192.168.200.10
+ range end: 192.168.200.99
+ template: default
+ systemd name: dhcpd
+tftp:
+ enabled: true
+ tftproot: /var/lib/tftpboot
+ systemd name: tftp
+nfs:
+ systemd name: nfs-server
+ exports:
+ - /home
+ - /var/warewulf
+
Note
+The DHCP range ends at 192.168.200.99
and as you will see
+below, the first node static IP address (post boot) is configured
+to 192.168.200.100
.
Start and enable the Warewulf service
+# Start and enable the warewulfd service
+sudo systemctl enable --now warewulfd
+
Configure system services automatically
+There are a number of services and configurations that Warewulf relies
+on to operate. If you wish to configure all services, you can do so
+individually (omitting the --all
) will print a help and usage
+instructions.
sudo wwctl configure --all
+
Note
+If you just installed the system fresh and have SELinux enforcing,
+you may need to reboot the system at this stage to properly set the
+contexts of the TFTP contents. After rebooting, you might also need
+to run $ sudo restorecon -Rv /var/lib/tftpboot/
if there are
+errors with TFTP still.
Pull and build the VNFS container (including the kernel)
+This will pull a basic VNFS container from Docker Hub and import the +default running kernel from the controller node and set both in the +“default” node profile.
+sudo wwctl container import docker://ghcr.io/hpcng/warewulf-rockylinux:9 rocky-9
+
Set up the default node profile
+Node configurations can be set via node profiles. Each node by default
+is configured to be part of the default
node profile, so any
+changes you make to that profile will affect all nodes.
The following command will set the container we just imported above to
+the default
node profile:
sudo wwctl profile set --yes --container rocky-8 "default"
+
Next we set some default networking configurations for the first +ethernet device. On modern Linux distributions, the name of the device +is not critical, as it will be setup according to the HW +address. Because all nodes will share the netmask and gateway +configuration, we can set them in the default profile as follows:
+sudo wwctl profile set --yes --netdev eth0 --netmask 255.255.255.0 --gateway 192.168.200.1 "default"
+
Once those configurations have been set, you can view the changes by +listing the profiles as follows:
+sudo wwctl profile list -a
+
Add a node
+Adding nodes can be done while setting configurations in one
+command. Here we are setting the IP address of eth0
and setting
+this node to be discoverable, which will then automatically have the
+HW address added to the configuration as the node boots.
Node names must be unique. If you have node groups and/or multiple +clusters, designate them using dot notation.
+Note that the full node configuration comes from both cascading +profiles and node configurations which always supersede profile +configurations.
+sudo wwctl node add n0000.cluster --ipaddr 192.168.200.100 --discoverable true
+
At this point you can view the basic configuration of this node by +typing the following:
+sudo wwctl node list -a n0000.cluster
+
Turn on your compute node and watch it boot!
+