Introduction
If you look at the market around OpenStack distro's it can be daunting, there are many flavours, that all look to do the same thing - automate the installation of OpenStack and ease the tweaking of the nerd knobs.
In my quest to find a suitable OpenStack distro that would allow me to 1) install on top of VMs 2) easy to reconfigure for future dev projects 3) setup OVS without too much fuss - I found the following non-commercial projects:
Project | Description | Caveat |
---|---|---|
RDO Triple-O | OpenStack On OpenStack, maintained by Redhat. | Uses PXE to deploy to baremetal servers. Voodoo can be used to mimic PXE and IPMI networks to deploy to VMs. |
OpenStack Ansible | OSAD (OpenStack Ansible Deployment). Maintained by the good folks at Rackspace. | The standard deployment is based on Linux Bridge, documentation around using OVS is limited. As the controllers use LXC containers, customizations aren't always the easiest. |
OpenStack Kolla | OpenStack built using Docker containers. | Great distro, though to reconfigure for future projects work is required to build out containers etc. Sounds fun, but with limited time, it is one for the future. |
DevStack | Dev OpenStack distro | Wouldn't bother, buggy and not stable, even for a dev platform.. |
This left me with one distro - RDO Packstack. Packstack provides a distro for dev/PoC based deployments, no containers insight, and also a nice set of command line options to use in its deployment. Niiice.
Let's install...
Environment
The following environment will be based upon 2 virtual machines (each machine consisting of 2 NICs):
- 1 x Controller
- 1 x Compute
With regards to the resources and IPs, please see below:
Hostname | External IP | vCPU | RAM | HDD |
---|---|---|---|---|
Controller01 | 172.29.236.180/24 | 2 | 16Gb | 40Gb |
Compute01 | 172.29.236.181/24 | 2 | 16Gb | 40Gb |
Figure 1: Topology
Disable NetworkManager/Firewalld
Next, disable NetworkManager and Firewalld on each node.
sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo systemctl disable NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl enable network
sudo systemctl start network
Install CentOS7
On each server install CentOS7.
Then configure the interfaces using the settings shown below:
Controller
/etc/sysconfig/network-scripts/ifcfg-ens192
DEVICE=ens192
NAME=ens192
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.29.236.180
PREFIX=24
GATEWAY=172.29.236.1
/etc/sysconfig/network-scripts/ifcfg-ens224
DEVICE=ens224
NAME=ens224
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.80.180
PREFIX=24
Compute01
/etc/sysconfig/network-scripts/ifcfg-ens192
DEVICE=ens192
NAME=ens192
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.29.236.181
PREFIX=24
GATEWAY=172.29.236.1
/etc/sysconfig/network-scripts/ifcfg-ens224
DEVICE=ens224
NAME=ens224
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.80.181
PREFIX=24
Once the interfaces have been configured run,
/etc/init.d/networking restart
Install Repos
On each server run the commands,
yum update -y ; yum install openssh-server vim -y
Next, we install the dependencies upon the controller node. Like so,
sudo yum install -y centos-release-openstack-ocata
sudo yum-config-manager --enable openstack-ocata
sudo yum update -y
sudo yum install -y openstack-packstack
Deploy OpenStack
Finally, we run the following command on the controller to deploy our OpenStack environment. This command will configure some key parameters, that you should be aware of. They are:
- The VLAN network type will be mapped to ens192.
- The VLAN range will be between 50-70 for the VLAN network type.
- The VLAN mapped name is physnet1.
- The VXLAN network type will be mapped to ens224.
packstack -d \
--install-hosts=172.29.236.180,172.29.236.181 \
--provision-demo=n \
--os-neutron-ml2-type-drivers=vxlan,vlan \
--os-neutron-ml2-tenant-network-types=vxlan \
--os-neutron-ml2-vlan-ranges=physnet1:50:70 \
--os-neutron-ml2-vni-ranges=5000:6000 \
--os-neutron-ovs-bridge-mappings=physnet1:br-vlan \
--os-neutron-l3-ext-bridge=provider \
--os-neutron-ovs-bridge-interfaces=br-vlan:ens192 \
--os-neutron-ovs-bridges-compute=br-vlan \
--os-neutron-ovs-tunnel-if=ens224