OpenStack Liberty All In One Installation on CentOS 7

openstack
In this tutorial we will install OpenStack Liberty release from RDO repository on one node (all-in-one installation) based on CentOS 7 / RHEL 7 using packstack installer script.

In all-in-one configuration all OpenStack nodes (controller node, compute node, network node) are installed on a single machine. This type of configuration can be deployed very easy and fast for testing purposes, also on KVM machines, when no physical hardware is available.

Environment used:
public network (Floating IP network): 192.168.2.0/24
public network gateway: 192.168.2.1
node IP: 192.168.2.32
node OS: CentOS 7.1 64bit OS
node hardware: 2GHz CPU / 4GB RAM / 1 ethernet card
OpenStack version: Liberty

Steps:

1. Update the system

[root@tuxfixer ~]# yum update

2. Install RDO repository

[root@tuxfixer ~]# yum install https://repos.fedorapeople.org/repos/openstack/openstack-liberty/rdo-release-liberty-2.noarch.rpm

3. Install packstack – automated installer script for OpenStack

[root@tuxfixer ~]# yum install openstack-packstack

4. Disable and stop NetworkManager

[root@tuxfixer ~]# systemctl disable NetworkManager
[root@tuxfixer ~]# systemctl stop NetworkManager

5. Run packstack automated installation

[root@tuxfixer ~]# packstack --allinone --nagios-install=n --provision-demo=n

Note: in this installation we do not install nagios monitoring system and demo tenant, because we don’t need them for typical OpenStack operation

Installation takes ~45 minutes:

Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20151227-133235-o40eTo/openstack-setup.log

Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Adding pre install manifest entries                  [ DONE ]
Setting up CACERT                                    [ DONE ]
...

After successful installation we should get the output similar to the below:

...
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

Additional information:
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.2.32. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.2.32/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * Because of the kernel update the host 192.168.2.32 requires reboot.
 * The installation log file is available at: /var/tmp/packstack/20151223-220716-Q7dZ0x/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20151223-220716-Q7dZ0x/manifests

Test the installation – login to the Horizon (OpenStack Dashboard), type the following in the browser:

http://192.168.2.32/dashboard

You should see the dashboard (Horizon) login screen:
dashboard-login
Login and password to the dashboard are written in /root/keystonerc_admin file, generated by packstack upon installation:

[root@tuxfixer ~]# cat /root/keystonerc_admin 
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD=1aaf1b58783f4856
export OS_AUTH_URL=http://192.168.2.32:5000/v2.0
export PS1='[\u@\h \W(keystone_admin)]\$ '

export OS_TENANT_NAME=admin
export OS_REGION_NAME=RegionOne

6. Bind physical interface port to OVS Bridge

Let’s go back to the console. At this stage we have following network interfaces on our node:

[root@tuxfixer ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:24:e4:75 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.32/24 brd 192.168.2.255 scope global dynamic eth0
       valid_lft 39065sec preferred_lft 39065sec
    inet6 fe80::5054:ff:fe24:e475/64 scope link 
       valid_lft forever preferred_lft forever
3: ovs-system:  mtu 1500 qdisc noop state DOWN 
    link/ether a6:1d:fc:76:6e:c0 brd ff:ff:ff:ff:ff:ff
4: br-int:  mtu 1500 qdisc noop state DOWN 
    link/ether 96:e4:fd:48:5d:46 brd ff:ff:ff:ff:ff:ff
5: br-ex:  mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 2e:8f:71:14:20:48 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2c8f:71ff:fe14:2048/64 scope link 
       valid_lft forever preferred_lft forever

Backup eth0 interface config file (ifcfg-eth0):

[root@tuxfixer ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /root/ifcfg-eth0.backup

Create br-ex network interface file based on eth0 interface:

[root@tuxfixer ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br-ex

Modify ifcfg-eth0 file to look like below:

DEVICE=eth0
HWADDR=52:54:00:24:e4:75
ONBOOT=yes

Modify ifcfg-br-ex file to look like below:

DEVICE=br-ex
TYPE=Ethernet
BOOTPROTO=static
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=192.168.2.32
PREFIX=24

Modify /etc/sysconfig/network file to look like below:

NETWORKING=yes
GATEWAY=192.168.2.1

Connect eth0 interface as a port to the br-ex bridge interface.

[root@tuxfixer ~]# ovs-vsctl add-port br-ex eth0; systemctl restart network

Note: above command will trigger network restart, so you will lose network connection for a while. The connection should be brought up again, if you modified ifcfg-eth0 and ifcfg-br-ex files correctly.

Verify, that eth0 port was connected to br-ex:

[root@tuxfixer ~]# ovs-vsctl show
bbf803eb-e596-40d4-8188-05da72d7ba46
    Bridge br-int
        fail_mode: secure
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port br-int
            Interface br-int
                type: internal
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
        Port "eth0"
            Interface "eth0"
    Bridge br-tun
        fail_mode: secure
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
        Port br-tun
            Interface br-tun
                type: internal
    ovs_version: "2.4.0"

Verify default route via br-ex interface:

[root@tuxfixer ~]# ip route show
default via 192.168.2.1 dev br-ex 
169.254.0.0/16 dev eth0  scope link  metric 1002 
169.254.0.0/16 dev br-ex  scope link  metric 1005 
192.168.2.0/24 dev br-ex  proto kernel  scope link  src 192.168.2.32 

7. Verify OpenStack status after installation

Time to check our new OpenStack cloud status and functionality. Source keystone file (keystonerc_admin) created in /root directory during installation to import OpenStack admin credentials to console session variables:

[root@tuxfixer ~]# source /root/keystonerc_admin

Check OpenStack status:

[root@tuxfixer ~(keystone_admin)]# openstack-status
== Nova services ==
openstack-nova-api:                     active
openstack-nova-cert:                    active
openstack-nova-compute:                 active
openstack-nova-network:                 inactive  (disabled on boot)
openstack-nova-scheduler:               active
openstack-nova-conductor:               active
...

Note: if neutron-openvswitch-agent service is in failed state, then start the service:

[root@tuxfixer ~(keystone_admin)]# systemctl start neutron-openvswitch-agent

…otherwise you could encounter “No valid host was found. There are not enough hosts available” error, when trying to create instance(s).

Verify host list:

[root@tuxfixer ~(keystone_admin)]# nova-manage host list
host                     	zone           
tuxfixer                 	internal       

Verify running services on host:

[root@tuxfixer ~(keystone_admin)]# nova-manage service list
Binary            Host      Zone       Status     State   Updated_At
nova-consoleauth  tuxfixer  internal   enabled    ':-)'   2015-12-27 13:53:25
nova-scheduler    tuxfixer  internal   enabled    ':-)'   2015-12-27 13:53:32
nova-conductor    tuxfixer  internal   enabled    ':-)'   2015-12-27 13:53:23
nova-compute      tuxfixer  nova       enabled    ':-)'   2015-12-27 13:53:27
nova-cert         tuxfixer  internal   enabled    ':-)'   2015-12-27 13:53:29

That’s all, you have just learned how to install Openstack Liberty all in one on CentOS 7.
Find out, how to Create Project Tenant in OpenStack and launch instances.