Files
warewulf/userdocs/nodes/ipmi.rst
Jonathon Anderson cd60acf271 Fix syntax errors in userdocs/
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
2026-03-17 15:23:28 -06:00

154 lines
4.9 KiB
ReStructuredText
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.. _ipmi:
====
IPMI
====
Warewulf can use IPMI to control cluster node power state or to connect to a
serial console.
Configuration
=============
Typically, common settings for IPMI interfaces are set on a profile, leaving
only the IP address set per-node.
If ``--ipmiwrite`` is set to ``true``, the ``wwinit`` overlay will write the
desired IPMI configuration to the node's BMC during boot.
.. code-block::
wwctl profile set default \
--ipminetmask=255.255.255.0 \
--ipmiuser=admin \
--ipmipass=passw0rd \
--ipmiinterface=lanplus \
--ipmiwrite
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
A ``bit-rate`` ipmi tag can be used to set the Serial over LAN bit rate (defaults to 38.4).
Typical options are 19.2, 38.4, and 115.2.
.. code-block::
wwctl profile set default \
--ipmitagadd bit-rate=115.2
``wwctl node list`` has a specific overview for IPMI settings.
.. code-block:: console
# wwctl node list --ipmi
NODE IPMI IPADDR IPMI PORT IPMI USERNAME IPMI INTERFACE
---- ----------- --------- ------------- --------------
n1 192.168.1.11 -- hwadmin lanplus
n2 192.168.1.12 -- hwadmin lanplus
n3 192.168.1.13 -- hwadmin lanplus
n4 192.168.1.14 -- hwadmin lanplus
Power
=====
The ``wwctl power`` command can query and set the current power state of cluster
nodes.
.. code-block:: console
wwctl power status n1 # query the current power status
wwctl power off n1 # power off a cluster node
wwctl power on n1 # power on a cluster node
wwctl power reset n1 # forcibly reboot a node
wwctl power soft n1 # ask a node to shut down gracefully
wwctl power cycle n1 # power a cluster node off, then back on
Node ranges are supported; e.g., ``n[1-10]``.
Console
=======
If your node is setup to use serial over lan (SOL), Warewulf can connect a
console to the node.
.. code-block:: console
# wwctl node console n1
Customization
=============
Warewulf doesn't manage IPMI interfaces directly, but uses ``ipmitool``. This is
configured with a template which defines Warewulf's IPMI behavior.
.. code-block::
{{ $cmd := "ipmitool" }}
{{ if .Interface }}{{ $cmd = cat $cmd "-I" .Interface }}{{ end }}
{{ if .EscapeChar }}{{ $cmd = cat $cmd "-e" .EscapeChar }}{{ end }}
{{ if .Port }}{{ $cmd = cat $cmd "-p" .Port }}{{ end }}
{{ if .Ipaddr }}{{ $cmd = cat $cmd "-H" .Ipaddr }}{{ end }}
{{ if .UserName }}{{ $cmd = cat $cmd "-U" (printf "\"%s\"" .UserName) }}{{ end }}
{{ if .Password }}{{ $cmd = cat $cmd "-P" (printf "\"%s\"" .Password) }}{{ end }}
{{ if eq .Cmd "PowerOn" }}{{ $cmd = cat $cmd "chassis power on" }}
{{ else if eq .Cmd "PowerOff" }}{{ $cmd = cat $cmd "chassis power off" }}
{{ else if eq .Cmd "PowerCycle" }}{{ $cmd = cat $cmd "chassis power cycle" }}
{{ else if eq .Cmd "PowerReset" }}{{ $cmd = cat $cmd "chassis power reset" }}
{{ else if eq .Cmd "PowerSoft" }}{{ $cmd = cat $cmd "chassis power soft" }}
{{ else if eq .Cmd "PowerStatus" }}{{ $cmd = cat $cmd "chassis power status" }}
{{ else if eq .Cmd "SDRList" }}{{ $cmd = cat $cmd "sdr list" }}
{{ else if eq .Cmd "SensorList" }}{{ $cmd = cat $cmd "sensor list" }}
{{ else if eq .Cmd "Console" }}{{ $cmd = cat $cmd "sol activate" }}
{{ end }}
{{- $cmd -}}
A different template can be used to change the IPMI behavior using the
``--ipmitemplate`` field. Referenced templates must be located in
``warewulf.conf:Paths.Datadir`` (``/usr/lib/warewulf/bmc/``).
All IPMI specific fields are accessible in the template:
+---------------------+--------------------+
| Parameter | Template variable |
+=====================+====================+
| ``--ipmiaddr`` | ``.Ipaddr`` |
+---------------------+--------------------+
| ``--ipminetmask`` | ``.Netmask`` |
+---------------------+--------------------+
| ``--ipmiport`` | ``.Port`` |
+---------------------+--------------------+
| ``--ipmigateway`` | ``.Gateway`` |
+---------------------+--------------------+
| ``--ipmiuser`` | ``.UserName`` |
+---------------------+--------------------+
| ``--ipmipass`` | ``.Password`` |
+---------------------+--------------------+
| ``--ipmiinterface`` | ``.Interface`` |
+---------------------+--------------------+
| ``--ipmiwrite`` | ``.Write`` |
+---------------------+--------------------+
| ``--ipmiescapechar``| ``.EscapeChar`` |
+---------------------+--------------------+
| ``--ipmitemplate`` | ``.Template`` |
+---------------------+--------------------+
Additionally, the ``.Cmd`` variable includes the relevant ``wwctl power``
subcommand.
* ``PowerOn``
* ``PowerOff``
* ``PowerCycle``
* ``PowerReset``
* ``PowerSoft``
* ``PowerStatus``
* ``SDRList``
* ``SensorList``
* ``Console``