[openstack-dev] [ironic] Routed Networks, flat driver and physical network awareness

Harald Jensås hjensas at redhat.com
Wed Jun 28 09:31:44 UTC 2017


Hi,

With the following Neutron patches recently merged, it is now possible
to provide DHCP service to instances on remote routed networks that
have a dhcp forwarder configured.

https://review.openstack.org/#/c/459861/
https://review.openstack.org/#/c/468744/ 
https://review.openstack.org/476477

This enables provisioning of baremetal machines on remote routed
networks as well. Removing the need to deploy ironic
conductor/inspector etc with local connection to each routed network
segment.

However with the flat driver this does not work, because the flat
driver bind neutron ports to the node running ironic-conductor service,
e.g 'nova_host_id'. Not to the actual baremetal node. (Ref: https://git
hub.com/openstack/ironic/blob/master/ironic/drivers/modules/network/fla
t.py#L64)

The result of binding to the 'nova_host_id' causes this error for
baremetal nodes on the remote routed network segment.

INFO ironic.conductor.task_manager [req-11f5c864-cc1a-49ee-b224-
a6695c1a9678 87f6dc660b1f43f79efa4355080e118c
6a8453039524487ca0bbf191cdc6317d - default default] Node f19ecc51-c8ec-
4d34-a349-206a5ae97ed2 moved to provision state "deploy fail
ed" from state "deploying"; target provision state is "active":
NetworkError: Unable to set binding:host_id for neutron port 5e674173-
32d9-4ec9-be2a-7f2b3aa02336. Error: Host ironic-
conductor.node.example.com is not connected to a segment where the
existing fixed_ips on port 5e6741
73-32d9-4ec9-be2a-7f2b3aa02336 will function given the routed network
topology.


I can workaround this by not binding the port:
$ sudo sed -i \
    s/'binding:host_id': host_id/'binding:host_id': None/" \
    ironic/drivers/modules/network/flat.py


I can see good progress on the phys-net aware spec. But with the flat
driver this will not help, as the nova_host_id is used for binding. Not
the ironic baremetal node uuid.


What would be a good way forward here?
 - Change the flat driver to not bind the port?
 - Change the flat driver to bind using the ironic node uuid, and rely
on phys-net info being populated in Neutron? (Requieres: baremetal
neutron agent https://review.openstack.org/#/c/456235/ + several
changes related to phys-net)
 - Another driver? 'flat-routed' that does one of the above?
 - Keep the flat driver, but register the ironic-conductor as a
separate host in neutron and populate phys-nets in neutron for this
'ironic_host_id' with all networks available on the baremetal nodes
ironic is managing?

Is there already a plan? Other options?


-- 
|Harald Jensås        |  irc: hjensas




More information about the OpenStack-dev mailing list