139 lines
4.6 KiB
ReStructuredText
139 lines
4.6 KiB
ReStructuredText
.. _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
|
||
|
||
``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``
|