Quick Reference
A quick reference for common day-to-day Warewulf operations.
Important paths
# Configuration
/etc/warewulf/warewulf.conf # Main server configuration
/etc/warewulf/nodes.conf # Node database
/etc/warewulf/auth.conf # API authentication
# Images (container filesystems)
/var/lib/warewulf/chroots/ # Image root directories
# Overlays
/usr/share/warewulf/overlays/ # Distribution-provided overlays
/var/lib/warewulf/overlays/ # Site-local overlays
/var/lib/warewulf/provision/ # Built overlay images (per-node)
# Logs
journalctl -u warewulfd # Warewulf daemon logs
Server management
# Configure all external services (TLS, warewulfd, TFTP, DHCP, NFS, SSH, hosts)
wwctl configure --all
# Configure individual services
wwctl configure dhcp
wwctl configure tftp
wwctl configure nfs
wwctl configure ssh
wwctl configure hostfile
# Restart the Warewulf daemon
systemctl restart warewulfd
Listing nodes and profiles
# List all nodes (summary)
wwctl node list
# List nodes with network interface details
wwctl node list --net
# List nodes with all fields (includes unset/inherited values)
wwctl node list --all n1
# List nodes with IPMI settings
wwctl node list --ipmi
# List specific nodes using hostlist syntax
wwctl node list n[1-10]
# Show current node boot status
wwctl node status
# List all profiles
wwctl profile list
# List all fields of a profile (includes inherited values)
wwctl profile list default --all
Adding a node
# Add a single node with an IP address
wwctl node add n1 --ipaddr=10.0.2.1
# Add a range of nodes (IP address auto-increments)
wwctl node add n[2-4] --ipaddr=10.0.2.2
# Add a node with multiple options: image, network interface, kernel args, and profile
wwctl node add n1 \
--ipaddr=10.0.2.1 \
--netmask=255.255.255.0 \
--netdev=eno1 \
--hwaddr=00:00:00:00:00:01 \
--image=rockylinux-9 \
--profile=default \
--kernelargs="quiet crashkernel=no"
# Un-set a field (revert to profile/default value)
wwctl node set n1 --image=UNDEF
Network interfaces
# Set the primary network interface
wwctl node set n1 \
--netdev=eno1 \
--hwaddr=00:00:00:00:00:01 \
--ipaddr=10.0.2.1 \
--netmask=255.255.255.0
# Add a secondary network (e.g. InfiniBand)
wwctl node set n1 \
--netname=infiniband \
--type=infiniband \
--netdev=ib0 \
--ipaddr=10.0.3.1 \
--netmask=255.255.255.0
# Configure a VLAN interface
wwctl node set n1 \
--netname=vlan42 \
--netdev=vlan42 \
--type=vlan \
--ipaddr=10.0.42.1 \
--netmask=255.255.252.0 \
--nettagadd="vlan_id=42,parent_device=eth0"
# Set DNS on an interface
wwctl node set n1 --nettagadd="DNS1=1.1.1.1"
Images
# Import an image from Docker Hub (or any OCI registry)
wwctl image import docker://ghcr.io/warewulf/warewulf-rockylinux:9 rockylinux-9
# Import with registry credentials
wwctl image import \
--username myuser --password mysecret \
docker://registry.example.com/myimage:latest myimage
# Import from a local directory or tarball
wwctl image import ./rockylinux-9/ rockylinux-9
wwctl image import rockylinux-9.tar rockylinux-9
# List available images
wwctl image list
# Open an interactive shell inside an image
wwctl image shell rockylinux-9
# Run a single command inside an image (e.g. install packages)
wwctl image exec rockylinux-9 -- dnf -y install vim htop
# Rebuild the image archive (after making changes)
wwctl image build rockylinux-9
# Assign an image to a node or profile
wwctl node set n1 --image=rockylinux-9
wwctl profile set default --image=rockylinux-9
IPMI
# Configure IPMI settings on the default profile
wwctl profile set default \
--ipminetmask=255.255.255.0 \
--ipmiuser=admin \
--ipmipass=passw0rd \
--ipmiinterface=lanplus \
--ipmiwrite
# Set the IPMI address on a specific node
wwctl node set n1 --ipmiaddr=192.168.2.1
# List IPMI settings
wwctl node list --ipmi
# Power commands
wwctl power status n[1-10]
wwctl power on n1
wwctl power off n1
wwctl power cycle n1
wwctl power reset n1
# Open serial-over-LAN console
wwctl node console n1
Overlays
# List all available overlays
wwctl overlay list
# Build overlays for all nodes
wwctl overlay build
# Build overlays for a specific node
wwctl overlay build n1
# Create a new site-local overlay
wwctl overlay create myoverlay
# Import a file from the host into an overlay
wwctl overlay import myoverlay /etc/motd
# Edit a file in an overlay (opens $EDITOR)
wwctl overlay edit myoverlay /etc/motd
# Show an overlay file (optionally rendered for a specific node)
wwctl overlay show myoverlay /etc/motd
wwctl overlay show myoverlay /etc/motd.ww --render=n1
# Assign overlays to all nodes via the default profile
wwctl profile set default \
--system-overlays="wwinit,wwclient,fstab,hostname,ssh.host_keys,NetworkManager" \
--runtime-overlays="hosts,ssh.authorized_keys"