image image image image image

On This Page

InfiniBand Bare Metal Deployment 

In bare metal deployment, a whole bare metal machine is used to do the compute work, instead of virtual machines. From the Openstack Nova point of view, a bare metal machine is equal to a virtual machine, yet, different configuration steps are required for deployment. Before following the instructions in this chapter, please read the latest Red Hat Bare Metal Provisioning Manual.  

The following sections detail the steps required to deploy a bare metal node, and use it to create a bare metal tenant instance

Undercloud Configuration 

Make sure you follow the Undercloud Installation and Configuration section, and then edit the file with the following configuration:

vi ~/bm-infiniband.yaml 

Add the following lines to the file:

  'OS::TripleO::Services::NeutronAgentsIBConfig': ../../deployment/neutron/neutron-agents-ib-config-container-puppet.yaml
  'OS::TripleO::NodeUserData': >-
    - mlnx_sdn_assist
    - openvswitch # openvswitch is case of mixed IB/ETH env
  MultiInterfaceEnabled: true
  BindNormalPortsPhysnet: ibnet
    - 'ibnet:ipoib,datacentre:openvswitch' # openvswitch is case of mixed IB/ETH env
  IPoIBPhysicalInterface: ib0
    - 'ibnet:ib0'
  NeutronNetworkVLANRanges: 'datacentre:10:99,ibnet:100:200'

Preparing the Container Images

See Preparing the Container Images.

Deploying the Overcloud

Following the undercloud configuration, deploy the overcloud, using the appropriate templates and yaml files from heat templates, as shown in the following example: 

openstack overcloud deploy \    
    --templates /usr/share/openstack-tripleo-heat-templates \ 
    -r ~/roles_data.yaml\                                    
    --timeout 240 \                                          
    -e /usr/share/openstack-tripleo-heat-templates/environments/disable-telemetry.yaml \ 
    -e /usr/share/openstack-tripleo-heat-templates/environments/podman.yaml\            
    --validation-warnings-fatal \                                                       
    -e /home/stack/cloud-names.yaml \                                                   
    -e /home/stack/overcloud_storage_params.yaml\                                       
    -e /home/stack/containers-prepare-parameter.yaml \                                  
    -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ 
    -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \ 
    -e /home/stack/network-environment.yaml \ 
    -e /home/stack/nic_configs/network.yaml \ 
    -e /home/stack/overcloud-selinux-config.yaml \ 
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/ironic.yaml\ 
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ 
    -e /home/stack/tripleo-heat-templates/environments/neutron-ml2-mlnx-sdn.yaml\ 
    -e ~/bm-infiniband.yaml 

Post Deployment Configuration  

Once the overcloud is deployed, the bare metal node should be prepared on the overcloud and deployed as a server. 

Creating a Provision Network

To maintain and deploy the bare metal nodes, the provisioning network should be added. To create it, use the following commands: 

openstack network create --share --provider-network-type vlan --provider-physical-network ibnet --provider-segment 100 provisioning 
openstack subnet create --network provisioning --subnet-range --gateway  --allocation-pool start=,end= provisioning-subnet 

Upon completion of the command, pkeys above 0x8064 will be automatically created in UFM. Login to the UFM webUI, and add the UFM server IB port GUID into the pkey.

Creating a Tenant Network

To create a tenant network, run:

openstack network create --share --provider-network-type vlan --provider-physical-network ibnet --provider-segment 200 tenant 
openstack subnet create --network tenant --subnet-range --allocation-pool start=,end= tenant-subnet 

Creating a Bare Metal Nodes Inventory 

Finally, the bare metal node configuration must be performed. Add the bare metal nodes information to a new file: "~/bm-nodes.yaml". Include the IB Adapter GUID collected in the previous steps for each server as a "client-id" parameter with a prefix of ff:00:00:00:00:00:02:00:00:02:c9:00:<GUID>. For example:

    - name: node-0 
      driver: ipmi 
      network_interface: neutron 
        ipmi_address: "" 
        ipmi_username: "ADMIN" 
        ipmi_password: "ADMIN" 
      resource_class: baremetal 
        cpu_arch: x86_64 
        local_gb: 930 
        memory_mb: '32768' 
        cpus: 24 
        - address: "ec:0d:9a:bf:54:d4" 
          pxe_enabled: true 
            client-id: "ff:00:00:00:00:00:02:00:00:02:c9:00:ec:0d:9a:03:00:bf:54:d4" 
          physical_network: "ibnet" 

Adding the Nodes to the Overcloud 

At this stage, the node must be added to the overcloud. This can be done by executing the following commands in the overcloud:  

source overcloudrc 
openstack baremetal create bm-nodes.yaml

Setting the Provisioning Network Pkey in the Node BIOS for PXE Boot 

By pressing CTRL+S at the Flexboot stage, a CX configuration page opens, where you can navigate to the menu demonstrated in the following figure, and set the pkey value. In this example, the value is set to 100. 

Setting the Ironic Images and Network to the Bare Metal Node 

For the node to work as a server, the images must be set to it. To do so, execute the following in the overcloud: 

DEPLOY_KERNEL=$(openstack image show ironic-deploy-kernel -f value -c id) 
DEPLOY_RAMDISK=$(openstack image show ironic-deploy-ram -f value -c id) 
PROV_NET=$(openstack network show provisioning -f value -c id) 
for uuid in $(openstack baremetal node list --provision-state enroll -f value -c UUID); 
    openstack baremetal node set $uuid \ 
        --driver-info deploy_kernel=$DEPLOY_KERNEL \ 
        --driver-info deploy_ramdisk=$DEPLOY_RAMDISK \ 
        --driver-info cleaning_network=$PROV_NET \ 
        --driver-info provisioning_network=$PROV_NET \ 
        --driver-info rescuing_network=$PROV_NET 
    openstack baremetal node manage $uuid --wait && 
        openstack baremetal node provide $uuid 

Create a Flavor 

Execute the following commands in the overcloud:  

source overcloudrc 
openstack flavor create --ram 1024 --disk 20 --vcpus 1 baremetal 
openstack flavor set baremetal --property resources:CUSTOM_BAREMETAL=1 
openstack flavor set baremetal --property resources:VCPU=0 
openstack flavor set baremetal --property resources:MEMORY_MB=0 
openstack flavor set baremetal --property resources:DISK_GB=0 

Boot the Bare Metal Server

Execute the following command in the overcloud: 

openstack server create --image baremetal-image --flavor baremetal --network tenant instance-0