I was at the OpenStack forum in Berlin this week and was working on install MaaS and discovered an issue when using multiple NICs when you have a default gateway assign on your PXE Boot NIC and also have a DHCP NICs.
It works fine during the Enlisting and Commisioning phase, since these only use the PXE Boot NIC, but when you do the Deploy phase, the PXE Boot NIC get the default gateway from that Network and then your other NIC that does DHCP also gets another default gateway. These are both added to the routing table as ECMP routes going to two different locations. Issue is something simple like ICMP can’t get through the MaaS since it’s just a HTTP Proxy, but the DHCP NIC works, bit with the two routes it will fail most of the time.
While at the Summit I work with 3 different Ubuntu Engineers on the problem and the only one that worked was to modify the Commissioned node using the command “maas admin interface set-default-gateway cdxfb7 26” once you have the system_id for that Node and the Interface ID. This is not a workable solution since you have to do this hack for every node once it is commissioned.
I would like to propose a feature on the Interface for PXE Boot using “auto assign or static” that you have a checkbox to enable or disable the used of the default gateway that is assign to it within MaaS.
All my networks configured on MaaS, doesn’t have gateway configured! From MaaS point of view, none of its networks gateway a gateway. So, this feature to “disable interface gateway” is for me, kind of global!
This way, my deployments are smoother, more predictable and almost never fail.
The only thing that I have to do after a deployment, is to add 1 line on Netplan yaml file, to add the desired gateway.
Well it is not really a work around, it was kind of the intended usage. If you don’t need a gateway, by not specifying it on the subnet, you ensure that all configured interfaces end up with no gateway, and if you need a default gateway, you could just have one subnet as gateway, or select the default gateway per the given interface.