Power management (snap/2.7/CLI)

To manage a machine, MAAS must be able to power cycle it, usually through the machine’s BMC card. Until you configure the power type, a newly-added machine can’t be enlisted and used by MAAS.

Four questions you may have:

  1. How do I configure a machine’s power type?
  2. Show me a catalogue of power parameters, by type.
  3. Can you give me an example of the virsh power type?
  4. Which BMC drivers are supported?

HP Moonshot - iLO4 (IPMI)

Form field Description Required
Power address IP address of unit Required
Power user Username to login Optional
Power password Password to access unit Optional
Power hardware address Hardware address of unit Required

HP Moonshot - iLO Chassis Manager

Form field Description Required
IP for MSCM CLI API IP address of unit Required
MSCM CLI API user Username to login Optional
MSCM CLI API password Password to access unit Optional
Node ID cXnY Required
- where X = cartridge number
Y = node number

Microsoft OCS - Chassis Manager

Form field Description Required
Power address IP address of unit Required
Power port Port where unit is attached Optional
Power user Username to login Optional
Power password Password to access unit Optional
Blade ID Blade ID (usu. 1-24) Required

OpenStack Nova

Form field Description Required
Host UUID Host UUID Required
Tenant name Tenant name Required
Username Username to login Required
Password Password to access unit Required
Auth URL URL to access unit Required

OpenBMC Power Driver

Form field Description Required
OpenBMC address IP address of unit Required
OpenBMC user Username to login Required
OpenBMC password Password to access unit Required

Christmann RECS-Box Power Driver

Form field Description Required
Node ID Node ID Required
Power address IP address of unit Required
Power port Port where unit is attached Optional
Power user Username to login Optional
Power password Password to access unit Optional

Redfish

Form field Description Required
Redfish address IP address of unit Required
Redfish user Username to login Required
Redfish password Password to access unit Required
Node ID Node ID Optional

SeaMicro 15000

Some of the fields for this power type have fixed choices, indicated in the “Choices” column.

Form field Description Choices Required
Power control type Password to access unit IPMI Required
REST API v0.9
REST API v2.0

Cisco UCS Manager

Form field Description Required
Server UUID Server UUID Required
URL for XML API XML API URL Required
API user API user Optional
API password API password Optional

virsh - libvirt KVM

Form field Description Required
Address URL of VM Required
Password API password Optional
Virsh VM ID libvirt VM UUID Required

VMware

Form field Description Required
VM Name VM name (if UUID unknown) Optional
VM UUID VM UUID (if known) Optional
VMware IP IP address of VM Required
VMware username Username to access VM Required
VMware password Password to access VM Required
VMware API port VMware API port number Optional
VMware API protocol VMware API protocol Optional

Facebook’s Wedge

Form field Description Required
IP address IP address of unit Required
Power user Username to access unit Optional
Power password Password to access unit Optional

Configure a machine’s power type

To (re)configure a machine’s power type, first find the machine’s $SYSTEM_ID with the following recipe:

maas admin machines read | jq -r '(["HOSTNAME","SIS'S"] | (., map(length*"-"))),
(.[] | [.hostname, .system_id]) | @tsv' | column -t

Next, use the MAAS CLI command maas machines... to (re)set the machine’s power type, like this:

maas $PROFILE machine update $SYSTEM_ID power_type="$POWER_TYPE"

where $POWER_TYPE can have the following values:

CLI power_type code Description
amt Intel AMT
apc American Power Conversion (APC) PDU
dli Digital Loggers, Inc. PDU
eaton Eaton PDU
hmc IBM Hardware Management Console (HMC)
ipmi IPMI
manual Manual power configuration
moonshot HP Moonshot - iLO4 (IPMI)
mscm HP Moonshot - iLO Chassis Manager
msftocs Microsoft OCS - Chassis Manager
nova OpenStack Nova
openbmc OpenBMC Power Driver
recs_box Christmann RECS-Box Power Driver
redfish Redfish
sm15k SeaMicro 15000
ucsm Cisco UCS Manager
virsh libvirt KVM
vmware VMware
wedge Facebook’s Wedge

Note the required and optional parameters associated with each power type.

Once you’ve successfully processed the command (as indicated by a stream of JSON, headed by “Success!”), MAAS performs a power check on the machine. A successful power check is a good indication that MAAS can properly communicate with the machine, that is, it should quickly result in a power status of “Power off”. A failed attempt will return errors that should guide you to fix your power_parameters.

Power catalogue

Intel AMT

All parameters are entered as key=value, e.g., power_type=amt. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type amt Required
power_address IP address of unit Required
power_pass Password to access unit Optional

American Power Conversion (APC) PDU

All parameters are entered as key=value, e.g., power_type=apc. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type apc Required
power_address IP address of unit Required
node_outlet PDU node outlet number Required
power_on_delay outlet power ON delay Optional, default=5

Digital Loggers, Inc. PDU

All parameters are entered as key=value, e.g., power_type=dli. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type dli Required
outlet_id outlet ID Required
power_address IP address of unit Required
power_user Username to login Optional
power_pass Password to access unit Optional

Eaton PDU

All parameters are entered as key=value, e.g., power_type=eaton. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type eaton Required
power_address IP address of unit Required
node_outlet PDU node outlet number Required
power_on_delay outlet power ON delay Optional, default=5

IBM Hardware Management Console (HMC)

All parameters are entered as key=value, e.g., power_type=hmc. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type hmc Required
power_address IP address of unit Required
server_name HMC managed server name Required
lpar HMC logical partition of unit Required
power_user Username to login Optional
power_pass Password to access unit Optional

IPMI

All parameters are entered as key=value, e.g., power_type=ipmi. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Some of the fields for this power type have fixed choices, indicated in the “Choices” column.

Parameter Description Choices Required
power_type ipmi Required
power_driver Power driver LAN [IPMI 1.5] Required
LAN_2_0 [IPMI 2.0]
power_boot_type Boot type Automatic Required
Legacy boot
EFI boot

Manual power configuration

Manual power configuration means exactly that – manually configured at the unit. The only MAAS CLI parameter is power_type=amt.

HP Moonshot - iLO4 (IPMI)

All parameters are entered as key=value, e.g., power_type=moonshot. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type | moonshot` Required
power_address IP address of unit Required
power_hwaddress Hardware address of unit Required
power_user Username to login Optional
power_pass Password to access unit Optional

HP Moonshot - iLO Chassis Manager

All parameters are entered as key=value, e.g., power_type=mscm. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type | mscm` Required
power_address IP address of unit Required
node_id cXnY Required
- where X = cartridge number
Y = node number
power_user Username to login Optional
power_pass Password to access unit Optional

Microsoft OCS - Chassis Manager

All parameters are entered as key=value, e.g., power_type=msftocs. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type | msftocs` Required
power_address IP address of unit Required
blade_id Blade ID (usu. 1-24) Required
power_port Port where unit is attached Optional
power_user Username to login Optional
power_pass Password to access unit Optional

OpenStack Nova

All parameters are entered as key=value, e.g., power_type=nova. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type | nova` Required
nova_id Host UUID Required
os_tenantname Tenant name Required
os_username Username to login Required
os_password Password to access unit Required
os_authurl URL to access unit Required

OpenBMC Power Driver

All parameters are entered as key=value, e.g., power_type=openbmc. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type openbmc Required
power_address IP address of unit Required
power_user Username to login Required
power_pass Password to access unit Required

Christmann RECS-Box Power Driver

All parameters are entered as key=value, e.g., power_type=recs_box. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type | recs_box` Required
node_id Node ID Required
power_address IP address of unit Required
power_port Port where unit is attached Optional
power_user Username to login Optional
power_pass Password to access unit Optional

Redfish

All parameters are entered as key=value, e.g., power_type=redfish. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type | redfish` Required
power_address IP address of unit Required
power_user Username to login Required
power_pass Password to access unit Required
node_id Node ID Optional

SeaMicro 15000

All parameters are entered as key=value, e.g., power_type=sm15k. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Some of the fields for this power type have fixed choices, indicated in the “Choices” column.

Parameter Description Choices Required
power_type sm15k Required
power_control Password to access unit ipmi Required
restapi
restapi2

Cisco UCS Manager

All parameters are entered as key=value, e.g., power_type=ucsm. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type ucsm Required
uuid Server UUID Required
power_address URL for XML API Required
power_user API user Optional
power_pass API password Optional

virsh - libvirt KVM

All parameters are entered as key=value, e.g., power_type=virsh. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type virsh Required
power_id libvirt VM UUID Required
power_address URL of VM Required
power_pass API password Optional

VMware

All parameters are entered as key=value, e.g., power_type=vmware. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type vmware Required
power_vm_name VM name (if UUID unknown) Optional
power_uuid VM UUID (if known) Optional
power_address IP address of VM Required
power_user Username to access VM Required
power_pass Password to access VM Required
power_port VMware API port number Optional
power_protocol VMware API protocol Optional

Facebook’s Wedge

All parameters are entered as key=value, e.g., power_type=amt. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.

Parameter Description Required
power_type wedge Required
power_address IP address of unit Required
power_user Username to access unit Optional
power_pass Password to access unit Optional

An example: the Virsh power type

Consider a machine backed by a KVM, accessed via virsh. You can create a corresponding MAAS machine and set its power parameters with a command like this one:

maas admin machines create \
architecture=amd64 \
mac_addresses=52:54:00:15:36:f2 \
power_type=virsh \
power_parameters_power_id=f677a842-571c-4e65-adc9-11e2cf92d363 \
power_parameters_power_address=qemu+ssh://stormrider@192.168.123.1/system \
power_parameters_power_pass=xxxxxxxx

If successful, this will return:

Success.

Machine-readable output follows this announcement. The JSON generated by this command is shown in the detail block.

MAAS command JSON response ``` { "storage": 0.0, "tag_names": [], "special_filesystems": [], "memory": 0, "boot_disk": null, "virtualblockdevice_set": [], "hardware_info": { "system_vendor": "Unknown", "system_product": "Unknown", "system_family": "Unknown", "system_version": "Unknown", "system_sku": "Unknown", "system_serial": "Unknown", "cpu_model": "Unknown", "mainboard_vendor": "Unknown", "mainboard_product": "Unknown", "mainboard_serial": "Unknown", "mainboard_version": "Unknown", "mainboard_firmware_vendor": "Unknown", "mainboard_firmware_date": "Unknown", "mainboard_firmware_version": "Unknown", "chassis_vendor": "Unknown", "chassis_type": "Unknown", "chassis_serial": "Unknown", "chassis_version": "Unknown" }, "address_ttl": null, "memory_test_status": -1, "other_test_status_name": "Unknown", "osystem": "", "status_message": "Commissioning", "netboot": true, "physicalblockdevice_set": [], "node_type": 0, "cpu_test_status": -1, "memory_test_status_name": "Unknown", "bcaches": [], "storage_test_status": 0, "system_id": "bhxws3", "status": 1, "commissioning_status": 0, "power_type": "virsh", "locked": false, "numanode_set": [ { "index": 0, "memory": 0, "cores": [] } ], "bios_boot_method": null, "fqdn": "ace-swan.maas", "node_type_name": "Machine", "hostname": "ace-swan", "volume_groups": [], "testing_status": 0, "network_test_status": -1, "other_test_status": -1, "interface_test_status": -1, "hwe_kernel": null, "blockdevice_set": [], "testing_status_name": "Pending", "power_state": "unknown", "min_hwe_kernel": "", "owner": "admin", "distro_series": "", "storage_test_status_name": "Pending", "cpu_speed": 0, "swap_size": null, "cpu_test_status_name": "Unknown", "hardware_uuid": null, "architecture": "amd64/generic", "pool": { "name": "default", "description": "Default pool", "id": 0, "resource_uri": "/MAAS/api/2.0/resourcepool/0/" }, "cache_sets": [], "pod": null, "iscsiblockdevice_set": [], "disable_ipv4": false, "status_action": "", "boot_interface": { "name": "eth0", "id": 10, "product": null, "system_id": "bhxws3", "effective_mtu": 1500, "children": [], "link_connected": true, "enabled": true, "interface_speed": 0, "numa_node": 0, "firmware_version": null, "parents": [], "discovered": null, "params": "", "links": [], "sriov_max_vf": 0, "tags": [], "type": "physical", "vlan": null, "vendor": null, "link_speed": 0, "mac_address": "52:54:00:15:36:f2", "resource_uri": "/MAAS/api/2.0/nodes/bhxws3/interfaces/10/" }, "cpu_count": 0, "domain": { "authoritative": true, "ttl": null, "resource_record_count": 0, "name": "maas", "is_default": true, "id": 0, "resource_uri": "/MAAS/api/2.0/domains/0/" }, "current_testing_result_id": 7, "default_gateways": { "ipv4": { "gateway_ip": null, "link_id": null }, "ipv6": { "gateway_ip": null, "link_id": null } }, "interface_set": [ { "name": "eth0", "id": 10, "product": null, "system_id": "bhxws3", "effective_mtu": 1500, "children": [], "link_connected": true, "enabled": true, "interface_speed": 0, "numa_node": 0, "firmware_version": null, "parents": [], "discovered": null, "params": "", "links": [], "sriov_max_vf": 0, "tags": [], "type": "physical", "vlan": null, "vendor": null, "link_speed": 0, "mac_address": "52:54:00:15:36:f2", "resource_uri": "/MAAS/api/2.0/nodes/bhxws3/interfaces/10/" } ], "status_name": "Commissioning", "commissioning_status_name": "Pending", "owner_data": {}, "ip_addresses": [], "raids": [], "network_test_status_name": "Unknown", "description": "", "current_commissioning_result_id": 6, "interface_test_status_name": "Unknown", "current_installation_result_id": null, "zone": { "name": "default", "description": "", "id": 1, "resource_uri": "/MAAS/api/2.0/zones/default/" }, "resource_uri": "/MAAS/api/2.0/machines/bhxws3/" } ```

Which BMC drivers are supported

MAAS supports many types of BMC hardware, though not all the drivers have the same capabilities. See the below table for a feature comparison of the BMC drivers currently supported by MAAS.

Tell me about BMC

BMC, or “Baseboard Management Controller,” is an extra micro-controller on the motherboard of a server which forms the interface between system-management software and the device’s hardware. The BMC can collect data from attached sensors, alert administrators to issues, and respond to remote-control commands to control system operation or power state, independent of the system’s CPU.

In the context of MAAS, the BMC is generally controlled by SNMP commands. Any given BMC will function in the context of one or more “power types,” which are physical interfaces that permit use of the IPMI (“Intelligent Platform Management Interface”) protocol. Each power type has a different set of expected parameters required to access and command the BMC.

Power Driver (X=supported) PXE Next Boot Power Querying Chassis/Pod Configuration Enhanced UI Error Reporting BMC Enlistment
American Power Conversion (APC) - PDU
Cisco UCS Manager X X X
Digital Loggers, Inc. - PDU
Facebook's Wedge *
HP Moonshot - iLO Chassis Manager X X X
HP Moonshot - iLO4 (IPMI) X X X
IBM Hardware Management Console (HMC) X X
IPMI X X X X
Intel AMT X X X
Manual
Microsoft OCS - Chassis Manager X X X
OpenStack Nova X
Rack Scale Design X X X
SeaMicro 15000 X X X
Sentry Switch CDU - PDU
VMWare X X X
Virsh (virtual systems) X X X

* The ‘Facebook’s Wedge’ OpenBMC power driver is considered experimental at this time.