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:
- How do I configure a machine’s power type?
- Show me a catalogue of power parameters, by type.
- Can you give me an example of the virsh power type?
- 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) |
lxd | LXD VM |
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 |
LXD VMs
All parameters are entered as key=value
, e.g., power_type=lxd
. The MAAS CLI will refuse the request with informative errors if required parameters are excluded.
Parameter | Description | Required |
---|---|---|
power_type |
lxd |
Required |
power_address |
IP address of unit | Required |
instance_name |
LXD container instance name | Required |
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.