Bare Metal service overview

Bare Metal service overview

The Bare Metal service is a collection of components that provides support to manage and provision physical machines.

Also known as the ironic project, the Bare Metal service may, depending upon configuration, interact with several other OpenStack services. This includes:

  • the OpenStack Telemetry module (ceilometer) for consuming the IPMI metrics
  • the OpenStack Identity service (keystone) for request authentication and to locate other OpenStack services
  • the OpenStack Image service (glance) from which to retrieve images and image meta-data
  • the OpenStack Networking service (neutron) for DHCP and network configuration
  • the OpenStack Compute service (nova) works with the Bare Metal service and acts as a user-facing API for instance management, while the Bare Metal service provides the admin/operator API for hardware management. The OpenStack Compute service also provides scheduling facilities (matching flavors <-> images <-> hardware), tenant quotas, IP assignment, and other services which the Bare Metal service does not, in and of itself, provide.
  • the OpenStack Object Storage (swift) provides temporary storage for the configdrive, user images, deployment logs and inspection data.

The Bare Metal service includes the following components:

ironic-api
A RESTful API that processes application requests by sending them to the ironic-conductor over remote procedure call (RPC).
ironic-conductor
Adds/edits/deletes nodes; powers on/off nodes with ipmi or ssh; provisions/deploys/cleans bare metal nodes.
ironic-python-agent
A python service which is run in a temporary ramdisk to provide ironic-conductor and ironic-inspector services with remote access, in-band hardware control, and hardware introspection.

Additionally, the Bare Metal service has certain external dependencies, which are very similar to other OpenStack services:

  • A database to store hardware information and state. You can set the database back-end type and location. A simple approach is to use the same database back end as the Compute service. Another approach is to use a separate database back-end to further isolate bare metal resources (and associated metadata) from users.
  • An oslo.messaging compatible queue, such as RabbitMQ. It may use the same implementation as that of the Compute service, but that is not a requirement.

Optionally, one may wish to utilize the following associated projects for additional functionality:

python-ironicclient
A command-line interface (CLI) and python bindings for interacting with the Bare Metal service.
ironic-inspector
An associated service which performs in-band hardware introspection by PXE booting unregistered hardware into the ironic-python-agent ramdisk.
diskimage-builder
A related project to help facilitate the creation of ramdisks and machine images, such as those running the ironic-python-agent.
bifrost
A set of Ansible playbooks that automates the task of deploying a base image onto a set of known hardware using ironic in a standalone mode.
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.