When installing Red Hat Openstack until version 17.1, we use tripleo and the so called “installer” : The Undercloud.

To configure it we have to set some parameters in file undercloud.conf, where we define 2 dhcp range :

  • dhcp_start, dhcp_end
  • inspection_iprange

inspection_iprange

This parameter define the range used to set ip address to baremetal node when running the openstack overcloud node introspect command. So you will need as many IPs as nodes you want to introspect concurrently. Once the introspection is done the ip address is freed and can be use for another node introspection.

Let’s imagine you have 10 nodes in Provisioning State and you have set in undercloud.conf :

1
inspection_iprange = 172.17.1.10,172.17.1.19

When running openstack overcloud node introspect --all-manageable, the undercloud will start the 10 nodes and only 5 of them will be able to get an ip and do the introspection. The 5 other one will reach timeout (3600s) then be rebooted for another try to introspect, and get the previously freed addresses.

So the idea here is to set inspection_iprange to the number of concurrent introspection you want to do, and pass the number to the introspection command.

1
openstack overcloud node introspect --all-manageable --concurrency 5

dhcp_start, dhcp_end

This range define the ip address assign to overcloud node ctlplane interface (the one used to ssh to the node). First ip is assign to neutron dhcp process, you can find it using:

1
openstack port list --device-owner network:dhcp

Or by checking the ip set in the network namespace

1
sudo ip netns exec qdhcp-$(openstack network list --name ctlplane -c ID -f value) ip a

Other ips of the range are assign to controllers and computes, and are kept by the node until its scale down

This means you need as many IPs as the number of nodes you want to deploy with your overcloud.

clean_nodes = true

Another parameter we set in undercloud.conf is linked to the dhcp_start, dhcp_end range, it is clean_nodes = true. When set, this will boot the node when changing its provisioning state from manage to available or after a node removal, in order to wipe the disk.

Ok but I’m using predictable fixed ip for the ctlplane so I don’t need the dhcp_start, dhcp_end range.

Indeed you still need it.

  1. When your overcloud node boot, you need a way to set the ip address to the ctplane, so it can share its disk with iscsi to the undercloud to write the overcloud -full image. So a dhcp server is mandatory, and the predictable fixed ips willl be reserved in the dhcp.
  2. When doing the clean node, as your node is not yet/anymore an overcloud node the fixed ip address is not set, so we need a temporary address to get the cleaning image.

This means you will need at least 2 ips in the dhcp_start, dhcp_end range :

  • One for the dhcp server
  • One for the node we clean up

Let’s just set one ip in introspection and 2 in start/end then run introspection with –concurrency 1

This can be a good idea, unfortunately it will do the introspection 1 by 1, but start all the node at the same time for cleanup. As only 1 ip is available, one node will proceed with cleanup but all other nodes will failed and be put in maintenance True.

So what should I do if I used predictable fixed IPs

This is not a perfect solution but after many test this is the best I found.

  1. Set "cleanup_nodes = false" in undercloud.conf
  2. Define "inspection_iprange" to the max number of nodes you want to introspect concurrently (5 to 10 ips)
  3. Use option "--concurrency CONCURRENCY" when running "openstack overcloud node introspect" with CONCURRENCY being the max number of IPs you set in "inspection_iprange"
  4. Manually run the node cleaning:
  • “openstack baremetal node manage ”
  • “openstack overcloud node clean ” or “openstack overcloud node clean –all-manageable”
  • “openstack overcloud node provide ” or “openstack overcloud node provide –all-manageable”