00daa18fc9
Updates the install and admin guides with information on node traits. Support for node traits was added in Bare Metal REST API version 1.37. Change-Id: I86e86320df4eb81aa30e5708dde9c82f50ba4d50 Depends-On: https://review.openstack.org/#/c/532288/ Partial-Bug: #1722194
150 lines
5.1 KiB
ReStructuredText
150 lines
5.1 KiB
ReStructuredText
.. _flavor-creation:
|
|
|
|
Create flavors for use with the Bare Metal service
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Scheduling based on properties
|
|
==============================
|
|
|
|
You'll need to create a special bare metal flavor in the Compute service.
|
|
The flavor is mapped to the bare metal node through the hardware specifications.
|
|
|
|
#. Change these to match your hardware:
|
|
|
|
.. code-block:: console
|
|
|
|
$ RAM_MB=1024
|
|
$ CPU=2
|
|
$ DISK_GB=100
|
|
$ ARCH={i686|x86_64}
|
|
|
|
#. Create the bare metal flavor by executing the following command:
|
|
|
|
.. code-block:: console
|
|
|
|
$ nova flavor-create my-baremetal-flavor auto $RAM_MB $DISK_GB $CPU
|
|
|
|
.. note:: You can replace ``auto`` with your own flavor id.
|
|
|
|
#. Set the architecture as extra_specs information of the flavor. This
|
|
will be used to match against the properties of bare metal nodes:
|
|
|
|
.. code-block:: console
|
|
|
|
$ nova flavor-key my-baremetal-flavor set cpu_arch=$ARCH
|
|
|
|
.. _scheduling-resource-classes:
|
|
|
|
Scheduling based on resource classes
|
|
====================================
|
|
|
|
As of the Pike release, a Compute service flavor is able to use the node's
|
|
``resource_class`` field (available starting with Bare Metal API version 1.21)
|
|
for scheduling, instead of the CPU, RAM, and disk properties defined in
|
|
the flavor. A flavor can request *exactly one* instance of a bare metal
|
|
resource class.
|
|
|
|
Start with creating the flavor in the same way as described in
|
|
`Scheduling based on properties`_. The ``CPU``, ``RAM_MB`` and ``DISK_GB``
|
|
values are not going to be used for scheduling, but the ``DISK_GB``
|
|
value will still be used to determine the root partition size.
|
|
|
|
After creation, associate each flavor with one custom resource class. The name
|
|
of a custom resource class that corresponds to a node's resource class (in the
|
|
Bare Metal service) is:
|
|
|
|
* the bare metal node's resource class all upper-cased
|
|
* prefixed with ``CUSTOM_``
|
|
* all punctuation replaced with an underscore
|
|
|
|
For example, if the resource class is named ``baremetal-small``, associate
|
|
the flavor with this custom resource class via:
|
|
|
|
.. code-block:: console
|
|
|
|
$ nova flavor-key my-baremetal-flavor set resources:CUSTOM_BAREMETAL_SMALL=1
|
|
|
|
Another set of flavor properties should be used to disable scheduling
|
|
based on standard properties for a bare metal flavor:
|
|
|
|
.. code-block:: console
|
|
|
|
$ nova flavor-key my-baremetal-flavor set resources:VCPU=0
|
|
$ nova flavor-key my-baremetal-flavor set resources:MEMORY_MB=0
|
|
$ nova flavor-key my-baremetal-flavor set resources:DISK_GB=0
|
|
|
|
.. warning::
|
|
The last step will be mandatory in the Queens release, as the Compute
|
|
service will stop providing standard resources for bare metal nodes.
|
|
|
|
Example
|
|
-------
|
|
|
|
If you want to define a class of nodes called ``baremetal.with-GPU``, start
|
|
with tagging some nodes with it:
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack --os-baremetal-api-version 1.21 baremetal node set $NODE_UUID \
|
|
--resource-class baremetal.with-GPU
|
|
|
|
.. warning::
|
|
It is possible to **add** a resource class to ``active`` nodes, but it is
|
|
not possible to **replace** an existing resource class on them.
|
|
|
|
Then you can update your flavor to request the resource class instead of
|
|
the standard properties:
|
|
|
|
.. code-block:: console
|
|
|
|
$ nova flavor-key my-baremetal-flavor set resources:CUSTOM_BAREMETAL_WITH_GPU=1
|
|
$ nova flavor-key my-baremetal-flavor set resources:VCPU=0
|
|
$ nova flavor-key my-baremetal-flavor set resources:MEMORY_MB=0
|
|
$ nova flavor-key my-baremetal-flavor set resources:DISK_GB=0
|
|
|
|
Note how ``baremetal.with-GPU`` in the node's ``resource_class`` field becomes
|
|
``CUSTOM_BAREMETAL_WITH_GPU`` in the flavor's properties.
|
|
|
|
.. _scheduling-traits:
|
|
|
|
Scheduling based on traits
|
|
--------------------------
|
|
|
|
Starting with the Queens release, the Compute service supports scheduling based
|
|
on qualitative attributes using traits. Starting with Bare Metal REST API
|
|
version 1.37, it is possible to assign a list of traits to each bare metal
|
|
node. Traits assigned to a bare metal node will be assigned to the
|
|
corresponding resource provider in the Compute service placement API.
|
|
|
|
When creating a flavor in the Compute service, required traits may be specified
|
|
via flavor properties. The Compute service will then schedule instances only
|
|
to bare metal nodes with all of the required traits.
|
|
|
|
Traits can be either standard or custom. Standard traits are listed in the
|
|
`os_traits library <https://docs.openstack.org/os-traits/latest/>`_. Custom
|
|
traits must meet the following requirements:
|
|
|
|
* prefixed with ``CUSTOM_``
|
|
* contain only upper case characters A to Z, digits 0 to 9, or underscores
|
|
* no longer than 255 characters in length
|
|
|
|
A bare metal node can have a maximum of 50 traits.
|
|
|
|
Example
|
|
^^^^^^^
|
|
|
|
To add the standard trait ``HW_CPU_X86_VMX`` and a custom trait
|
|
``CUSTOM_TRAIT1`` to a node:
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack --os-baremetal-api-version 1.37 baremetal node add trait \
|
|
$NODE_UUID CUSTOM_TRAIT1 HW_CPU_X86_VMX
|
|
|
|
Then, update the flavor to require these traits:
|
|
|
|
.. code-block:: console
|
|
|
|
$ nova flavor-key my-baremetal-flavor set trait:CUSTOM_TRAIT1=required
|
|
$ nova flavor-key my-baremetal-flavor set trait:HW_CPU_X86_VMX=required
|