Use multitenancy with Bare Metal service

Use multitenancy with Bare Metal service

Multitenancy allows creating a dedicated project network that extends the current Bare Metal (ironic) service capabilities of providing flat networks. Multitenancy works in conjunction with Networking (neutron) service to allow provisioning of a bare metal server onto the project network. Therefore, multiple projects can get isolated instances after deployment.

Bare Metal service provides the local_link_connection information to the Networking service ML2 driver. The ML2 driver uses that information to plug the specified port to the project network.

local_link_connection fields
Field Description
switch_id Required. Identifies a switch and can be an LLDP-based MAC address or an OpenFlow-based datapath_id.
port_id Required. Port ID on the switch, for example, Gig0/1.
switch_info Optional. Used to distinguish different switch models or other vendor specific-identifier.

Configure Networking service ML2 driver

To enable the Networking service ML2 driver, edit the /etc/neutron/plugins/ml2/ml2_conf.ini file:

  1. Add the name of your ML2 driver.
  2. Add the vendor ML2 plugin configuration options.
[ml2]
# ...
mechanism_drivers = my_mechanism_driver

[my_vendor]
param_1 = ...
param_2 = ...
param_3 = ...

For more details, see Networking service mechanism drivers.

Configure Bare Metal service

After you configure the Networking service ML2 driver, configure Bare Metal service:

  1. Edit the /etc/ironic/ironic.conf for the ironic-conductor service. Set the network_interface node field to a valid network driver that is used to switch, clean, and provision networks.

    [DEFAULT]
    # ...
    enabled_network_interfaces=flat,neutron
    
    [neutron]
    # ...
    cleaning_network_uuid=$UUID
    provisioning_network_uuid=$UUID
    

    Warning

    The cleaning_network_uuid and provisioning_network_uuid parameters are required for the neutron network interface. If they are not set, ironic-conductor fails to start.

  2. Set neutron to use Networking service ML2 driver:

    $ ironic node-create -n $NAME --network-interface neutron --driver agent_ipmitool
    
  3. Create a port with appropriate local_link_connection information. Set the pxe_enabled port attribute to True to create network ports for for the pxe_enabled ports only:

    $ ironic --ironic-api-version latest port-create -a $HW_MAC_ADDRESS \
      -n $NODE_UUID -l switch_id=$SWITCH_MAC_ADDRESS \
      -l switch_info=$SWITCH_HOSTNAME -l port_id=$SWITCH_PORT --pxe-enabled true
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.