1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
===========================
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 other
vendor-specific protocol;
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.
.. _`remote procedure call (RPC)`: https://en.wikipedia.org/wiki/Remote_procedure_call
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.
.. _python-ironicclient: https://docs.openstack.org/python-ironicclient/latest/
.. _ironic-inspector: https://docs.openstack.org/ironic-inspector/latest/
.. _diskimage-builder: https://docs.openstack.org/diskimage-builder/latest/
.. _bifrost: https://docs.openstack.org/bifrost/latest/
|