![Dmitry Tantsur](/assets/img/avatar_default.png)
* Mention the IPMI hardware type in usage docs * Cross-link between usage and install docs * Add missing ipmitool vendor interface example * Stop pretending that there is one "IPMItool driver" * Fix several small issues Change-Id: I3c8928abc319d04b84f8581226627860c57a1abc Related-Bug: #1524745
7.7 KiB
Enabling drivers and hardware types
Introduction
The Bare Metal service delegates actual hardware management to
drivers. Starting with the Ocata release, two types of
drivers are supported: classic drivers (for example,
pxe_ipmitool
, agent_ilo
, etc.) and the newer
hardware types (for example, generic redfish
and
ipmi
or vendor-specific ilo
and
irmc
).
Drivers, in turn, consist of hardware interfaces: sets of functionality dealing with some aspect of bare metal provisioning in a vendor-specific way. Classic drivers have all hardware interfaces hardcoded, while hardware types only declare which hardware interfaces they are compatible with.
Please refer to the driver composition reform specification for technical details behind hardware types.
From API user's point of view, both classic drivers and
hardware types can be assigned to the driver
field
of a node. However, they are configured differently.
Enabling hardware types
Hardware types are enabled in the configuration file of the
ironic-conductor service by setting the
enabled_hardware_types
configuration option, for
example:
[DEFAULT]
enabled_hardware_types = ipmi,redfish
However, due to their dynamic nature, they also require configuring enabled hardware interfaces.
Note
All available hardware types and interfaces are listed in setup.cfg file in the source code tree.
There are several types of hardware interfaces:
- boot
-
manages booting of both the deploy ramdisk and the user instances on the bare metal node. Boot interface implementations are often vendor specific, and can be enabled via the
enabled_boot_interfaces
option:[DEFAULT] enabled_hardware_types = ipmi,ilo enabled_boot_interfaces = pxe,ilo-virtual-media
Boot interfaces with
pxe
in their name requireconfigure-pxe
. - console
-
manages access to the serial console of a bare metal node. See Configuring Web or Serial Console for details.
- deploy
-
defines how the image gets transferred to the target disk.
- With
iscsi
deploy method the deploy ramdisk publishes node's hard drive as an iSCSI share. The ironic-conductor then copies the image to this share. Requiresconfigure-iscsi
. - With
direct
deploy method, the deploy ramdisk fetches the image from an HTTP location (object storage temporary URL or user-provided HTTP URL).
[DEFAULT] enabled_hardware_types = ipmi,redfish enabled_deploy_interfaces = iscsi,direct
- With
- inspect
-
implements fetching hardware information from nodes. Can be implemented out-of-band (via contacting the node's BMC) or in-band (via booting a ramdisk on a node). The latter implementation is called
inspector
and uses a separate service called ironic-inspector. Example:[DEFAULT] enabled_hardware_types = ipmi,ilo,irmc enabled_inspect_interfaces = ilo,irmc,inspector
See inspection documentation for more details.
- management
-
provides additional hardware management actions, like getting or setting boot devices. This interface is usually vendor-specific, and its name often matches the name of the hardware type (with
ipmitool
being a notable exception). For example:[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_management_interfaces = ipmitool,redfish,ilo,irmc
Using
ipmitool
requiresconfigure-ipmi
. See driver-specific documentation for required configuration of each driver. - network
-
connects/disconnects bare metal nodes to/from virtual networks. This is the only interface that is also pluggable for classic drivers. See
configure-tenant-networks
for more details. - power
-
runs power actions on nodes. Similar to the management interface, it is usually vendor-specific, and its name often matches the name of the hardware type (with
ipmitool
being again an exception). For example:[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_power_interfaces = ipmitool,redfish,ilo,irmc
Using
ipmitool
requiresconfigure-ipmi
. See driver-specific documentation for required configuration of each driver. - raid
-
manages building and tearing down RAID on nodes. Similar to inspection, it can be implemented either out-of-band or in-band (via
agent
implementation). See RAID documentation for details.[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_raid_interfaces = agent,no-raid
- vendor
-
is a place for vendor extensions to be exposed in API. See vendor methods documentation for details.
[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_vendor_interfaces = ipmitool,no-vendor
Here is a complete configuration example, enabling two generic protocols, IPMI and Redfish, with a few additional features:
[DEFAULT]
enabled_hardware_types = ipmi,redfish
enabled_boot_interfaces = pxe
enabled_console_interfaces = ipmitool-socat,no-console
enabled_deploy_interfaces = iscsi,direct
enabled_inspect_interfaces = inspector
enabled_management_interfaces = ipmitool,redfish
enabled_network_interfaces = flat,neutron
enabled_power_interfaces = ipmitool,redfish
enabled_raid_interfaces = agent
enabled_vendor_interfaces = ipmitool,no-vendor
Note that some interfaces have implementations named
no-<TYPE>
where <TYPE>
is the
interface type. These implementations do nothing and return errors when
used from API.
Enabling classic drivers
Classic drivers are enabled in the configuration file of the
ironic-conductor service by setting the
enabled_drivers
configuration option, for example:
[DEFAULT]
enabled_drivers = pxe_ipmitool,pxe_ilo,pxe_drac
The names in this comma-separated list are entry point names of the drivers. They have to be available at conductor start-up, and all dependencies must be installed locally. For example,
- drivers starting with
pxe
and some drivers starting withagent
requireconfigure-pxe
, - drivers starting with
pxe
or havingiscsi
in their name requireconfigure-iscsi
, - drivers ending with
ipmitool
requireconfigure-ipmi
.
See driver-specific documentation for required configuration of each driver.