MicroStack and Local Network

I have worked a bit with the MicroStack (Multi‐node deployment) deployment. It’s a very nice experience to get started with OpenStack. Now I wanted to make the VM instances directly accessible from the local network (currently I can only access the default 10.20.20.0 network from the OpenStack hosts itself). I would assume there should be two ways of doing this:

  1. enable a flat provider network (so that the instances can directly connect to the physical network instead of being in the virtual one)

  2. allow routing from the local network into the internal virtual one

Some years ago I have played with Neutron and I remember that there is quite some configuration necessary on the controller and compute hosts to allow flat networks. So to enable option 1) I would be able to reconfigure the Neutron configuration (m2l, linux bridge agent, etc.). Yet I’m struggling a bit with this Snap package. I understand that the default snap configuration is read-only and I can only work in the user-data file system, but it seems my modifications in the user-data folder are not overwriting the overlay filesystem in “/var/snap/…”. Of cause I assume that I misunderstand something from Snap but I’m seriously not able to find a clear explanation of how to modify /etc files in snaps and check which files are actually active.

Concerning option 2) (allow routing into the 10.20.20.0 network): as I struggled with the modification of the MicroStack configuration I thought I might be just able to route into the network itself by setting some routes and allow ip_forwarding. Yet it seems that the VM instances are actually receiving by default IPs from the 192.168.0.0 network which is not reachable from the controller. Is there some routing configuration required to still enable access to the VM instances?

1 Like

Hello, Bovi.

Did you find out some solution? We are trying to do the same: configure an external network with our own floating IPs. But we are not finding out good documentation to do this with Microstack.

Best regards.

1 Like

The easiest way I’ve found is the following

first is to add the external interface to the br-ex in openvswitch this allows for connections to come into the stack.
something like this

ovs-vsctl add-port br-ex eno2

then you need to editing the ml2_conf.ini under /var/snap/microstack/common/neutron/ something something
you may have to copy the one from the repo https://opendev.org/x/microstack/src/branch/master/snap-overlay/etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]
type_drivers = flat,vlan
external_network_type = flat

[ml2_type_vlan]
flat_networks = *

Restart your service and that should give to external vlan access.

if you just wanted a flat single network will just add the port to ovs and change the network in microstack.

Unfortunately I’ve burned through multiple days trying to figure this out myself and also found the Microstack docs really bad/incomplete. They don’t really explain how neutron is now hidden inside of microstack.openstack as network. I was able to successfully create my OpenStack cluster using Microstack (4 machines sharing a locale network) but have the same problem when I try to deploy a Juju controller.

Openstack is able to successfully provision the controller on one of my machines (complete installation of Juju) but then errors with this type of failure:

23:52:44 DEBUG juju.provider.common bootstrap.go:615 connection attempt for 192.168.2.224 failed: ssh: connect to host 192.168.2.224 port 22: No route to host
23:52:47 DEBUG juju.provider.common bootstrap.go:615 connection attempt for 10.0.4.7 failed: ssh: connect to host 10.0.4.7 port 22:

My physical router does DHCP so instead of using a virtual one I was hoping to create my “public” network on the router itself. Then I’ll create a private (local) network with a virtual router between the two. All the documentation for linux_bridge are from neutron (not microstack) so interpreting the instructions is very complicated.

OpenStack Docs: Linux bridge: Provider networks

OpenStack Docs: Bridge interface configuration

The most noticeable problem is anytime I create a network Openstack creates a network:dhcp port in the configuration (even when I don’t check dhcp) and the status is always DOWN.

Any thoughts / help? How can you create a “public” network leveraging your existing router and mount it to your OpenStack network? I tried the instructions above but the only network I see are OVN.

Hi All,

We plan to make the networking config more flexible. Please take a look at the following bug and the spec that is linked to it and let us know if this would solve the issues you’ve run into.

Thanks,
Corey