From d982fea6da97c4bb94ab8f524a5b68af8a7e7a73 Mon Sep 17 00:00:00 2001 From: Jonathon Anderson Date: Sat, 22 Mar 2025 02:12:13 -0600 Subject: [PATCH] Set an IPMI tag ``vlan`` to configure the vlan during ``ipmiwrite`` - Closes: #1031 Signed-off-by: Jonathon Anderson --- CHANGELOG.md | 1 + overlays/wwinit/rootfs/warewulf/config.ww | 3 +++ overlays/wwinit/rootfs/warewulf/init.d/50-ipmi | 10 ++++++++++ userdocs/nodes/ipmi.rst | 7 +++++++ 4 files changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41838b55..fcbaeec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Added `wwctl overlay import --overwrite` to overwrite existing overlay file. - wwclient uses `WW_IPADDR`, if set, to contact the Warewulf server. #1788 - Add `wwctl node import --yes` to assume yes to confirmations. +- Set an IPMI tag ``vlan`` to configure the vlan during ``ipmiwrite``. #1031 ### Fixed diff --git a/overlays/wwinit/rootfs/warewulf/config.ww b/overlays/wwinit/rootfs/warewulf/config.ww index 4ae9d323..ae9600f6 100644 --- a/overlays/wwinit/rootfs/warewulf/config.ww +++ b/overlays/wwinit/rootfs/warewulf/config.ww @@ -8,3 +8,6 @@ WWIPMI_GATEWAY="{{$.Ipmi.Gateway}}" WWIPMI_USER="{{$.Ipmi.UserName}}" WWIPMI_PASSWORD="{{$.Ipmi.Password}}" WWIPMI_WRITE="{{$.Ipmi.Write.Bool}}" +{{- if $.Ipmi.Tags.vlan }} +WWIPMI_VLAN="{{$.Ipmi.Tags.vlan}}" +{{- end }} diff --git a/overlays/wwinit/rootfs/warewulf/init.d/50-ipmi b/overlays/wwinit/rootfs/warewulf/init.d/50-ipmi index f6cf8a45..9451bcc2 100755 --- a/overlays/wwinit/rootfs/warewulf/init.d/50-ipmi +++ b/overlays/wwinit/rootfs/warewulf/init.d/50-ipmi @@ -32,6 +32,16 @@ command -v ipmitool >/dev/null 2>&1 || ( lan_info="$(ipmitool lan print 1)" +if [ -n "$WWIPMI_VLAN" ]; then + prev_vlan=$(echo "$lan_info" | grep "^802.1q VLAN ID *:" | awk -F': ' '{print $2 }') + if [ "$prev_vlan" == "$WWIPMI_VLAN" ] || [ "$prev_vlan" = "Disabled" -a "$WWIPMI_VLAN" = off ]; then + echo "IPMI VLAN: $WWIPMI_VLAN" + else + echo "IPMI VLAN: $prev_vlan -> $WWIPMI_VLAN" + echo ipmitool lan set 1 vlan id "$WWIPMI_VLAN" + fi +fi + if [ -n "$WWIPMI_IPADDR" ]; then prev_ip=$(echo "$lan_info" | grep "^IP Address *:" | awk -F': ' '{ print $2 }') if [ "$prev_ip" != "$WWIPMI_IPADDR" ]; then diff --git a/userdocs/nodes/ipmi.rst b/userdocs/nodes/ipmi.rst index 4e198d54..b8384aa6 100644 --- a/userdocs/nodes/ipmi.rst +++ b/userdocs/nodes/ipmi.rst @@ -28,6 +28,13 @@ desired IPMI configuration to the node's BMC during boot. wwctl node set n1 \ --ipmiaddr=192.168.2.1 +Additionally, a ``vlan`` ipmi tag can be used to set the IPMI VLAN ID. + +.. code-block:: + + wwctl profile set default \ + --ipmitagadd vlan=42 + ``wwctl node list`` has a specific overview for IPMI settings. .. code-block:: console