Hardware introspection daemon for OpenStack Ironic
Go to file
Serge Kovaleff 292e8c9cfd Generate Sphinx docs
Change-Id: I540b28d6173b30baf6ee2e6e14d8ba5ffb67b660
Closes-Bug: #1514803
2015-11-27 11:56:36 +02:00
devstack Merge "Support IPA for devstack-plugin" 2015-11-05 18:01:51 +00:00
doc Generate Sphinx docs 2015-11-27 11:56:36 +02:00
ironic-inspector/locale Prerelease translation source update 2015-07-08 21:49:33 +02:00
ironic_inspector Use Reno for release notes management 2015-11-26 10:12:14 +01:00
releasenotes Generate Sphinx docs 2015-11-27 11:56:36 +02:00
rootwrap.d Use rootwrap to execute iptables instead of requiring root 2015-09-23 13:27:15 +02:00
.gitignore Generate Sphinx docs 2015-11-27 11:56:36 +02:00
.gitreview Update .gitreview file for project rename 2015-06-12 23:12:30 +00:00
CONTRIBUTING.rst Merge "Enable migration autogenerate" 2015-11-11 14:11:34 +00:00
HTTP-API.rst Make it explicit that finished is set to true on failures too 2015-11-13 17:29:36 +01:00
LICENSE Apache license 2014-10-03 17:15:55 +02:00
README.rst Generate Sphinx docs 2015-11-27 11:56:36 +02:00
babel.cfg Add scripts to manage translations 2015-03-04 00:07:37 +00:00
example.conf Use rootwrap to execute iptables instead of requiring root 2015-09-23 13:27:15 +02:00
ironic-inspector.8 Final discoverd -> inspector rename/move pass 2015-06-15 15:34:00 +02:00
plugin-requirements.txt Store and expose introspection data 2015-08-27 20:18:54 -04:00
requirements.txt Updated from global requirements 2015-11-19 15:56:24 +00:00
rootwrap.conf Use rootwrap to execute iptables instead of requiring root 2015-09-23 13:27:15 +02:00
setup.cfg Generate Sphinx docs 2015-11-27 11:56:36 +02:00
setup.py Updated from global requirements 2015-09-17 12:12:28 +00:00
test-requirements.txt Generate Sphinx docs 2015-11-27 11:56:36 +02:00
tox.ini Generate Sphinx docs 2015-11-27 11:56:36 +02:00


Hardware introspection for OpenStack Bare Metal

This is an auxiliary service for discovering hardware properties for a node managed by Ironic. Hardware introspection or hardware properties discovery is a process of getting hardware parameters required for scheduling from a bare metal node, given it's power management credentials (e.g. IPMI address, user name and password).

A special ramdisk is required to collect the information on a node. The default one can be built using diskimage-builder and ironic-discoverd-ramdisk element (see Configuration below).

Refer to CONTRIBUTING.rst for instructions on how to contribute.


ironic-inspector was called ironic-discoverd before version 2.0.0.

Version Support Matrix

ironic-inspector currently requires bare metal API version 1.6 to be provided by Ironic. This version is available starting with Ironic Kilo release.

Here is a mapping between Ironic versions and supported ironic-inspector versions. The Standalone column shows which ironic-inspector versions can be used in standalone mode with each Ironic version. The Inspection Interface column shows which ironic-inspector versions can be used with the Ironic inspection interface in each version of Ironic.

Ironic Version

Inspector (Discoverd) Version

----------+--------------------+ Standalone|Inspection Interface

+==============+==========+====================+ 1.0 +--------------+----------+--------------------+ 1.0 - 2.2 +--------------+----------+--------------------+ 1.1 - 2.X +--------------+----------+--------------------+


2.X means we don't have specific plans on deprecating support for this Ironic version. This does not imply that we'll support it forever though.


Usual hardware introspection flow is as follows:

  • Operator enrolls nodes into Ironic e.g. via ironic CLI command. Power management credentials should be provided to Ironic at this step.

  • Nodes are put in the correct state for introspection as described in node_states.

  • Operator sends nodes on introspection using ironic-inspector API or CLI (see Usage).

  • On receiving node UUID ironic-inspector:

    • validates node power credentials, current power and provisioning states,
    • allows firewall access to PXE boot service for the nodes,
    • issues reboot command for the nodes, so that they boot the ramdisk.
  • The ramdisk collects the required information and posts it back to ironic-inspector.

  • On receiving data from the ramdisk, ironic-inspector:

    • validates received data,
    • finds the node in Ironic database using it's BMC address (MAC address in case of SSH driver),
    • fills missing node properties with received data and creates missing ports.


    ironic-inspector is responsible to create Ironic ports for some or all NIC's found on the node. ironic-inspector is also capable of deleting ports that should not be present. There are two important configuration options that affect this behavior: add_ports and keep_ports (please refer to example.conf for detailed explanation).

    Default values as of ironic-inspector 1.1.0 are add_ports=pxe, keep_ports=all, which means that only one port will be added, which is associated with NIC the ramdisk PXE booted from. No ports will be deleted. This setting ensures that deploying on introspected nodes will succeed despite Ironic bug 1405131.

    Ironic inspection feature by default requires different settings: add_ports=all, keep_ports=present, which means that ports will be created for all detected NIC's, and all other ports will be deleted. Refer to the Ironic inspection documentation for details.

  • Separate API (see Usage) can be used to query introspection results for a given node.

  • Nodes are put in the correct state for deploying as described in node_states.

Starting DHCP server and configuring PXE boot environment is not part of this package and should be done separately.