IPMI

It is possible to control the power or connect a console to your nodes being managed by Warewulf by connecting to the BMC through the use of ipmitool. Other methods can also configured, but require additional configuration. We will discuss how to set this up below.

IPMI Settings

The common settings for the IPMI interfaces on all nodes can be set on a Profile level. The only field that would need to be assigned to each individual node would be the IP address.

The settings are only written to the IPMI interface if --ipmiwrite is set to true. The write process happens at every boot of the node through the script /warewulf/init.d/50-ipmi in the system overlay and are done with ipmitool.

If an individual node has different settings, you can set the IPMI settings for that specific node, overriding the default settings.

Here is a table outlining the fields on a Profile and Node which is the same as the parameter that can be used when running wwctl profile set or wwctl node set.

Parameter

Profile

Node

Valid Values

Default Value

--ipmiaddr

false

true

--ipminetmask

true

true

--ipmiport

true

true

623

--ipmigateway

true

true

--ipmiuser

true

true

--ipmipass

true

true

--ipmiinterface

true

true

‘lan’ or ‘lanplus’

lan

--ipmiwrite

true

true

true or false

false

--ipmiescapechar

true

true

single character

~

--ipmitemplate

true

true

path to template

Reviewing Settings

There are multiple ways to review the IPMI settings. They can be reviewed from a Profile level, all the way down to a specific Node.

Profile View

# wwctl profile list -a
PROFILE              FIELD              PROFILE      VALUE
=====================================================================================
default              Id                 --           default
default              comment            --           This profile is automatically included for each node
default              cluster            --           --
default              container          --           sle-micro-5.3
default              ipxe               --           --
default              runtime            --           --
default              wwinit             --           --
default              root               --           --
default              discoverable       --           --
default              init               --           --
default              asset              --           --
default              profile            --           --
default              default:type       --           --
default              default:onboot     --           --
default              default:netdev     --           --
default              default:hwaddr     --           --
default              default:ipaddr     --           --
default              default:ipaddr6    --           --
default              default:netmask    --           --
default              default:gateway    --           --
default              default:mtu        --           --
default              default:primary    --           --

Node View

# wwctl node list -a n001
NODE                 FIELD              PROFILE      VALUE
=====================================================================================
n001                 Id                 --           n001
n001                 comment            default      This profile is automatically included for each node
n001                 cluster            --           --
n001                 container          default      sle-micro-5.3
n001                 ipxe               --           (default)
n001                 runtime            --           (hosts,ssh.authorized_keys,syncuser)
n001                 wwinit             --           (wwinit,wwclient,fstab,hostname,ssh.host_keys,issue,resolv,udev.netname,systemd.netname,ifcfg,NetworkManager,debian.interfaces,wicked,ignition)
n001                 root               --           (initramfs)
n001                 discoverable       --           --
n001                 init               --           (/sbin/init)
n001                 asset              --           --
n001                 kerneloverride     --           tw
n001                 kernelargs         --           (quiet crashkernel=no net.ifnames=1)
n001                 ipmiaddr           --           --
n001                 ipminetmask        --           --
n001                 ipmiport           --           --
n001                 ipmigateway        --           --
n001                 ipmiuser           --           --
n001                 ipmipass           --           --
n001                 ipmiinterface      --           --
n001                 ipmiwrite          --           --
n001                 ipmiescapechar     --           --
n001                 profile            --           default
n001                 default:type       --           (ethernet)
n001                 default:onboot     --           --
n001                 default:netdev     --           eth0
n001                 default:hwaddr     --           11:22:33:44:55:66
n001                 default:ipaddr     --           10.0.2.1
n001                 default:ipaddr6    --           --
n001                 default:netmask    --           255.255.252.0
n001                 default:gateway    --           --
n001                 default:mtu        --           --
n001                 default:primary    --           true

Review Only IPMI Settings

The above views show you everything that is set on a Profile or Node level. That is a lot of detail. If you want to view key IPMI connecton details for a node or all nodes, you can do the following.

# wwctl node list -i
NODE NAME              IPMI IPADDR      IPMI PORT  IPMI USERNAME        IPMI INTERFACE
==================================================================================================
n001                   192.168.1.11     --         hwadmin              --
n002                   192.168.1.12     --         hwadmin              --
n003                   192.168.1.13     --         hwadmin              --
n004                   192.168.1.14     --         hwadmin              --

Power Commands

The power command can be used to manage the current power state of your nodes through IPMI.

wwctl power [command] where [command] is one of:

cycle

Turns the power off and then on

off

Turns the power off

on

Turns the power on

reset

Issues a reset

soft

Shutdown gracefully

status

Shows current power status

Console

If your node is setup to use serial over lan (SOL), Warewulf can connect a console to the node.

# wwctl node console n001

Ipmi template

As warewulf doesn’t manage the ipmi/bmc interfaces directly, but calls ipmitool this managed with a template which defines the behavior. For ipmitool following template is used

In order to use another template, its filename must be specified for a node or profile via the --ipmitemplate switch and the template must placed under /usr/lib/warewulf/bmc or to the path which is was defined as datadir in warwulf.conf or during compile time. All IPMI specific variables are accessible in the template which are the following

Parameter | Template variable |

+=====================+====================+ | --ipmiaddr | .Ipaddr | +———————+——————–+ | --ipminetmask | .Netmask | +———————+——————–+ | --ipmiport | .Port | +———————+——————–+ | --ipmigateway | .Gateway | +———————+——————–+ | --ipmiuser | .UserName | +———————+——————–+ | --ipmipass | .Password | +———————+——————–+ | --ipmiinterface | .Interface | +———————+——————–+ | --ipmiwrite | .Write | +———————+——————–+ | --ipmiescapechar``| ``.EscapeChar | +———————+——————–+ | --ipmitemplate | .Template | +———————+——————–+

Additional the .Args variable is accessible which can have following values: * PowerOn * PowerOff * PowerCycle * PowerReset * PowerSoft * PowerStatus * SDRList * SensorList * Console which are the calls done by wwctl power commands.

Also the script /warewulf/init.d/50-ipmi in the system overlay may need an update. There the variables must have the prefix .Ipmi