The Bare Metal service, codenamed ironic
, is a collection of components
that provides support to manage and provision physical machines.
The Bare Metal service includes the following components:
Adds/edits/deletes nodes; powers on/off nodes with IPMI or other vendor-specific protocol; provisions/deploys/cleans bare metal nodes.
ironic-conductor uses drivers to execute operations on hardware.
Additionally, the Bare Metal service has certain external dependencies, which are very similar to other OpenStack services:
The Bare Metal RESTful API service is used to enroll hardware that the Bare Metal service will manage. A cloud administrator usually registers it, specifying their attributes such as MAC addresses and IPMI credentials. There can be multiple instances of the API service.
The ironic-conductor process does the bulk of the work. For security reasons, it is advisable to place it on an isolated host, since it is the only service that requires access to both the data plane and IPMI control plane.
There can be multiple instances of the conductor service to support various class of drivers and also to manage fail over. Instances of the conductor service should be on separate nodes. Each conductor can itself run many drivers to operate heterogeneous hardware. This is depicted in the following figure.
The API exposes a list of supported drivers and the names of conductor hosts servicing them.
The Bare Metal service may, depending upon configuration, interact with several other OpenStack services. This includes:
ceilometer
) for consuming the IPMI
metricskeystone
) for request authentication and
to locate other OpenStack servicesglance
) from which to retrieve images and
image meta-dataneutron
) for DHCP and network
configurationnova
) 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.swift
) provides temporary storage
for the configdrive, user images, deployment logs and inspection data.The diagram below shows the logical architecture. It shows the basic components that form the Bare Metal service, the relation of the Bare Metal service with other OpenStack services and the logical flow of a boot instance request resulting in the provisioning of a physical server.
A user’s request to boot an instance is passed to the Compute service via the Compute API and the Compute Scheduler. The Compute service uses the ironic virt driver to hand over this request to the Bare Metal service, where the request passes from the Bare Metal API, to the Conductor, to a Driver to successfully provision a physical server for the user.
Just as the Compute service talks to various OpenStack services like Image, Network, Object Store etc to provision a virtual machine instance, here the Bare Metal service talks to the same OpenStack services for image, network and other resource needs to provision a bare metal instance.
See Understanding Bare Metal Deployment for a more detailed breakdown of a typical deployment process.
Optionally, one may wish to utilize the following associated projects for additional functionality:
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.