To prepare baremetal environment following things needs to consider:
1. Hardware configuration
To deploy a minimal TripleO cloud with TripleO you need the following baremetal machines:
- Undercloud
- Overcloud Controller
- Overcloud Compute
For each additional Overcloud role, such as Block Storage or Object Storage, you need an additional baremetal machine.
The baremetal machines must meet the following minimum specifications:
- 8 core CPU
- 12 GB memory
- 60 GB free disk space
Please also note the undercloud needs space in order to store twice the “overcloud-full” image (one time in its glance, one time in /var/lib subdirectories for PXE/TFTP).
TripleO is supporting only the following operating systems:
- RHEL 9 (x86_64)
- CentOS Stream 9 (x86_64)
Please also ensure your node clock is set to UTC in order to prevent any issue when the OS hwclock syncs to the BIOS clock.
2. Networking
The overcloud nodes will be deployed from the undercloud machine and therefore the machines need to have their network settings modified to allow for the overcloud nodes to be PXE booted using the undercloud machine. Few things to consider:
- All overcloud machines are setup to support IPMI
- A management provisioning network is setup for all of the overcloud machines. One NIC from every machine needs to be in the same broadcast domain of the provisioning network. Please note, The provisioning network NIC should not be the same NIC that you are using for remote connectivity to the undercloud machine.
- The overcloud machines can PXE boot off the NIC that is on the private VLAN. For each overcloud machine, the MAC address of the NIC that will PXE boot on the provisioning network the IPMI information for the machine (i.e. IPMI NIC IP address, IPMI username and password).
3. Baremetal Node Configuration:
Once the nodes are setup, Ironic workflow nodes begin their life in a state called enroll
. Nodes in this state are not available for deployment, nor for most of other actions. Node information saved in instackenv.json will be imported and then nodes will be brought to manageable state. Finally last step before the deployment is to make nodes available
using the provide
provisioning action.
$ openstack overcloud import instackenv.json
$ baremetal node manage <NAME OR UUID>
$ baremetal node provide <NAME OR UUID>
An alternative to creating an inventory file (instackenv.json
) and enrolling nodes from it, you can discover and enroll the nodes automatically. TripleO supports two approaches to the discovery process:
- Automatic enrollment of new nodes
Set the following in yourundercloud.conf
before installing the undercloud:
enable_node_discovery = True
You can enable ironic-inspector to automatically enroll all unknown nodes that boot the introspection ramdisk.
After the discovery is enabled, any node that boots the introspection ramdisk and posts back to ironic-inspector will be enrolled in ironic. Make sure the nodes are connected to the provisioning network, and default to booting from PXE. Power them on. New nodes appear in theenroll
state by default and use thepxe_ipmitool
driver (configurable via thediscovery_default_driver
option inundercloud.conf
). You have to set the power credentials for these nodes and make them available. - Scanning BMC range
You can discover new nodes by scanning an IP range for accessible BMCs. You need to provide a set of credentials to try, and optionally a list of ports. Use the following command to run the scan:
$ openstack overcloud node discover --range <RANGE> --credentials <USER1:PASSWORD1> --credentials <USER2:PASSWORD2>
The resulting node UUIDs will be printed on the screen.
4. Setting the Root Device for Deployment
If your hardware has several hard drives, it’s highly recommended that you specify the exact device to be used during introspection and deployment as a root device. This is done by setting a root_device
property on the node in Ironic. It is also possible to autogenerate root device hints for all nodes instead of setting them one by one.
$ openstack overcloud node configure --all-manageable --root-device=sdb,sdc,vda
5. Provisioning Baremetal Before Overcloud Deploy
Baremetal provisioning is a feature which interacts directly with the Bare Metal service to provision baremetal before the overcloud is deployed. This adds a new provision step before the overcloud deploy. A new YAML file format is introduced to describe the baremetal required for the deployment, and the new command openstack overcloud node provision
will consume this YAML and make the specified changes. The provision command interacts with the following undercloud components:
- A baremetal provisioning workflow which consumes the YAML and runs to completion
- The metalsmith tool which deploys nodes and associates ports. This tool is responsible for presenting a unified view of provisioned baremetal while interacting with:
- The Ironic baremetal node API for deploying nodes
- The Ironic baremetal allocation API which allocates nodes based on the YAML provisioning criteria
- The Neutron API for managing ports associated with the node’s NICs.
For detailed configuration options, refer https://docs.openstack.org/project-deploy-guide/tripleo-docs/latest/provisioning/baremetal_provision.html