OpenStack with Public Network

Openstack With Existing external Network

In this, we will see how to use packstack –allinone with an existing external network. This method should allow any machine on the network to be able to access launched instances via their floating IPs. Also, at the end of this message, there are some ideas for making this process better than I thought we could discuss.

These instructions have been tested on Centos 7.

Initially configure the centos machine with RDO repository and run the following command to configure the Ethernet as a bridge mapping network and create an OVS bridge interface to connect with an external network.


#packstack --allinone --provision-demo=n 

--os-neutron-ovs-bridge-mappings=extnet:br-ex 

--os-neutron-ovs-bridge-interfaces=br-ex:eth0 

--os-neutron-ml2-type-drivers=vxlan,flat


This will define a logical name for our external physical L2 segment as "extnet". Later we will refer to our provider network by the name when creating external networks.


The command also adds a 'flat' network type to the list of types supported by the installation. This is needed when your provider network is a simple flat network (the most common setup for PoCs). If you use a VLAN segment for external connectivity, you should add 'vlan' to the list of type drivers.


(There's an alternate method using packstack –allinone –provision-all-in-one-ovs-bridge=n, but it's more complicated)


After completion, given a single machine with a current IP of x.x.x.x/24 via DHCP with the gateway of x.x.x.x:


Make /etc/sysconfig/network-scripts/ifcfg-br-ex resemble:

DEVICE=br-ex

DEVICETYPE=ovs

TYPE=OVSBridge

BOOTPROTO=static

IPADDR=x.x.x.x # Old eth0 IP since we want the network restart to not

# kill the connection, otherwise pick something outside your DHCP range

NETMASK=x.x.x.x # your netmask

GATEWAY=x.x.x.1 # your gateway

DNS1=x.x.x.1 # your nameserver

ONBOOT=yes


The file above will move the network parameters from eth0 to br-ex.

Make /etc/sysconfig/network-scripts/ifcfg-eth0 resemble (no BOOTPROTO!):

Note: if on Centos7, the file could be /etc/sysconfig/network-scripts/ifcfg-enp2s0 and DEVICE should be enp2s0


DEVICE=eth0

TYPE=OVSPort

DEVICETYPE=ovs

OVS_BRIDGE=br-ex

ONBOOT=yes


It is also possible to use a bond. In that case /etc/sysconfig/network-scripts/ifcfg-bond0 may look like this:

DEVICE=bond0

DEVICETYPE=ovs

TYPE=OVSPort

OVS_BRIDGE=br-ex

ONBOOT=yes

BONDING_MASTER=yes

BONDING_OPTS="mode=802.3ad"


This means we will bring up the interface and plug it into the br-ex OVS bridge as a port, providing the uplink connectivity.


Restart the network service

# reboot

or, alternatively:

# service network restart


Now, create the external network with Neutron.

keystonerc_admin

# neutron net-create external network --provider:network_type 

flat --provider:physical_network extnet --router:external


Please note: "extnet" is the L2 segment we defined with –os-neutron-ovs-bridge-mappings above.


You need to create a public subnet with an allocation range outside of your external DHCP range and set the gateway to the default gateway of the external network.


Please note: x.x.x.x is the router and CIDR we defined in /etc/sysconfig/network-scripts/ifcfg-br-ex for external connectivity.


#neutron subnet-create --name public_subnet --enable_dhcp=False 

--allocation-pool=start=x.x.x.x,end=x.x.x.x --gateway=x.x.x.x external_network x.x.x.x




Relevant Blogs:

OpenStack Windows Image  

OpenStack Installation 

Introduction to YAML  

Setting up Ansible Windows Host

Recent Comments

No comments

Leave a Comment