OpenStack Liberty All In One Installation on CentOS 7

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):
public network gateway:
node IP:
node OS: CentOS 7.1 64bit OS
node hardware: 2GHz CPU / 4GB RAM / 1 ethernet card
OpenStack version: Liberty


1. Update the system

[root@tuxfixer ~]# yum update

2. Install RDO repository

[root@tuxfixer ~]# yum install

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

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 To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * Because of the kernel update the host 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:

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

[root@tuxfixer ~]# cat /root/keystonerc_admin 
export OS_USERNAME=admin
export OS_PASSWORD=1aaf1b58783f4856
export OS_AUTH_URL=
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 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 brd 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:


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


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


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
    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 dev br-ex dev eth0  scope link  metric 1002 dev br-ex  scope link  metric 1005 dev br-ex  proto kernel  scope link  src 

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.

45 thoughts on “OpenStack Liberty All In One Installation on CentOS 7

  1. Tom January 6, 2016 at 12:27

    Thanks a lot! Can I still use your KVM for OpenStack article for this -> ?

    • Grzegorz Juszczak January 6, 2016 at 14:05

      Yes, you can use KVM article, but for all in one (one node) installation you need only one interface on virtual machine: eth0 – bridged to hypervisor’s bridge. Don’t create second interface: eth1 based on virbr0, it’s not needed.

  2. Du February 2, 2016 at 15:34

    Preparing servers [ ERROR ]

    ERROR : Failed to run remote script, stdout:
    stderr: Warning: Permanently added ‘’ (ECDSA) to the list of known hosts.
    WARNING: Your password has expired.
    Password change required but no TTY available.

    Please check log file /var/tmp/packstack/20160202-143230-NHQXG_/openstack-setup.log for more information
    Additional information:
    * A new answerfile was created in: /root/packstack-answers-20160202-143231.txt
    * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
    please help me!

    • Grzegorz Juszczak February 2, 2016 at 23:00

      Hi, try to add couple of NTP servers to your answer file:,,

      and then retry the installation.

  3. Du February 6, 2016 at 16:06

    How do i connect muliti server with a openstack?
    That mean, Dedicated servers 1,2,3,4…. connect a openstack horizon

  4. Grzegorz Juszczak February 6, 2016 at 16:57

    Hi Du, I didn’t get your problem.
    Do you want to attach 4 dedicated servers to OpenStack installation as Nova Compute Servers?
    You can do it by setting those servers’ IPs in answer file as follows:

    # The list of IP addresses of the server on which to install the Nova
    # compute service

    You can change existing openstack configuration by re-running packstack with the modified answers.txt file, packstack will install services on new nodes using built-in puppet script.
    Don’t forget to exclude already configured servers/nodes (i.e .controller) from being modified by packstack installer by setting:

    # Comma separated list of servers to be excluded from installation in
    # case you are running Packstack the second time with the same answer
    # file and don’t want Packstack to touch these servers. Leave plain if
    # you don’t need to exclude any server.
    where is controller IP and you don’t want to touch/modify controller during re-configuration of cloud.

    • Du February 8, 2016 at 04:13

      yes, you are right!
      i have problem with RDO install openstack
      my virtual machine have Floating IP : and Private IP :
      after Installation completed successfully, System access requirements Private IP : when i acceess not working
      error :404 not found
      Can you help me?

  5. Grzegorz Juszczak February 9, 2016 at 12:18

    You will not connect to dashboard via virtual machine (instance) IP, neither internal nor Floating. You need to access dashboard via controller ip:

  6. Akki March 5, 2016 at 07:42

    Hi Admin my centos 7 show me interface name enp8s0 not eth0 what i do

    • Grzegorz Juszczak March 5, 2016 at 19:14

      … so you do on enp8s0 🙂
      It doesn’t matter what is the interface name, just ensure that enp8s0 is the interface you will use for external/provider/public network and will be OK.

  7. Fayaz Rehman March 11, 2016 at 16:59

    After rebooting the server:
    gives me 404 Not Found
    any idea ????

    • German March 11, 2016 at 17:46

      # systemctl enable openstack-ceilometer-api.service openstack-ceilometer-notification.service \
      openstack-ceilometer-central.service openstack-ceilometer-collector.service \
      openstack-ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-notifier.service
      # systemctl start openstack-ceilometer-api.service openstack-ceilometer-notification.service \
      openstack-ceilometer-central.service openstack-ceilometer-collector.service \
      openstack-ceilometer-alarm-evaluator.service openstack-ceilometer-alarm-notifier.service

  8. sachin patel March 12, 2016 at 11:11

    I am having problem while running of puppet
    Error appeared during Puppet run:
    Error: Execution of ‘/usr/bin/yum -d 0 -e 0 -y install erlang’ returned 1: Error: Package: erlang-odbc-R16B-03.0.el7.x86_64 (openstack-liberty)
    You will find full trace in log /var/tmp/packstack/20160312-153112-pembCu/manifests/

    how to solve this?

    • Grzegorz Juszczak March 13, 2016 at 13:28

      Hi, try to execute the command manually:

      [root@tuxfixer ~]# /usr/bin/yum -d 0 -e 0 -y install erlang

      … it should give you the info about the problem it encountered.
      Perhaps you have some unresolved dependencies – some missing rpms, that openstack can’t install itself and you will have to download and install them manually.

  9. Du March 16, 2016 at 14:27

    How do install openstack on VPS one NIC
    You know, VPS jus have one NIC

    • Grzegorz Juszczak March 18, 2016 at 12:10

      On VPS you install in the same way as on bare metal / real hardware.
      You just need to verify if your hosting provider allows OpenStack on his VPSes and if it’s even possible regarding hosting backend architecture (to install OpenStack on already virtualized VPS server).

  10. Du March 18, 2016 at 15:47

    i follow your post but after restart network ,i do not access or connect it

  11. shivakumar March 24, 2016 at 07:37

    Could you please post me how to create openstack network should communicate to external or outside network….

  12. fadloli April 29, 2016 at 05:56


    if i want install openstack like your post whats is minimum requirements?so i can create VM on the openstack?

    • Grzegorz Juszczak April 29, 2016 at 12:29

      Hi Fadloli

      For me the absolute minimum for all-in-one installation would be:
      RAM: 2GB
      DISK: ~ 20GB
      CPU: ~ 2GHz

      with the above configuration you still will be able to launch one maybe two small cirrros ( based VM with for example 64MB of allocated RAM.
      If you want to launch CentOS or RedHat based images you will need more resources (CPU, RAM, DISK) to let those VMs work properly.

  13. josefh June 1, 2016 at 10:01

    after finishing the installation, i must have an internet connection to access the dashboard. what should i do to make it as an offline server? please help me. thanks before.

    • Grzegorz Juszczak June 2, 2016 at 21:17

      Hi Josefh
      Install web browser (along with some Desktop Manager) on the server where OpenStack is installed and connect as localhost:
      It works for me.

  14. jribeauv June 28, 2016 at 14:33


    I’m currently deploying our OpenStack platform (Liberty based):

    1 physical host holding controller, network, storage and compute node
    1 physical host holding compute node .

    I plan to run the following command ( from the controller/compute node) to achieve it :

    # packstack –answer-file=/root/answer.txt

    with following contents in answer.txt :

    # List the servers on which to install the Compute service.

    Am I right ?

    In another hand, I’m wondering where I’ve to do the “networking bridging ” modifications with this two nodes config ?

    Thx for help.



  15. jlan421 July 23, 2016 at 14:39

    I see you added eth0 interface as a port in br-ex bridge interface, but isn’t you also need the following entries in your network scripts?



    • Grzegorz Juszczak July 25, 2016 at 21:55

      Those parameters are not critical for the OpenStack Neutron and OVS to work, so I don’t usually use them.

  16. Robert September 12, 2016 at 17:10

    do you have a similar guide Mitaka

  17. bathie sene December 6, 2016 at 17:13

    I followed your tuto but here is the error that I have
    ERROR : Error appeared during Puppet run:

    Error: Could not start Service[httpd]: Execution of ‘/usr/bin/systemctl start httpd’ returned 1: Job for httpd.service failed because the control process exited with error code. See “systemctl status httpd.service” and “journalctl -xe” for details.

    Help me please

    • Grzegorz Juszczak December 6, 2016 at 21:16


      Try to start/restart service manually:
      systemctl start httpd
      systemctl restart httpd

      Then display the status of httpd:
      systemctl status httpd.service

      and check if there are still any errors.

  18. bathie sene December 7, 2016 at 10:57

    Hi i tried to manually start the service:
    But here is what he gives me as result
    Job for httpd.service failed because the control process exited with error code. See “systemctl status httpd.service” and “journalctl -xe” for details.

  19. bathie sene December 7, 2016 at 10:59

    â httpd.service – The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since mer. 2016-12-07 09:46:31 GMT; 7min ago
    Docs: man:httpd(8)
    Process: 10871 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
    Process: 10869 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
    Main PID: 10869 (code=exited, status=1/FAILURE)

  20. bathie sene December 7, 2016 at 11:01

    For the status display httpd here is the result

    â httpd.service – The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since mer. 2016-12-07 09:46:31 GMT; 7min ago
    Docs: man:httpd(8)
    Process: 10871 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
    Process: 10869 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
    Main PID: 10869 (code=exited, status=1/FAILURE)

    • Grzegorz Juszczak December 7, 2016 at 23:14


      Unfortunately this output doesn’t give any information.
      Maybe launch “journalctl -f” on one console and restart httpd on another console and check if you are getting some reliable information from journalctl.

  21. bathie sene December 9, 2016 at 11:53

    I used the journalctl -f on one console and restart httpd on another console but still httpd.service failed

  22. bathie sene December 15, 2016 at 10:55

    I installed openstack mitaka
    But if I click on one of its elements (image, network, instances, volumes, router etc …)
    Here is the error that I have:
    Error: Could not retrieve usage information.
    Help me …

    • Grzegorz Juszczak December 15, 2016 at 21:52

      It looks like a database error, because it can not retrieve any information, maybe check if your database is working properly, check if you can connect to your database manually, check if maria db is running, etc..
      That’s all what comes to my mind right now, honestly.

      Did you check any logs on any node?
      There must be some trace of this failure somewhere in the logs.
      I would start from searching logs from keystone, since it’s strictly connected with maria db.

  23. bathie sene December 21, 2016 at 16:24

    I create a vm but if I click log here is the error message it gives me Unable to retrieve the log for instance “b2c8fbea-c063-4737-a886-521456f92dbd”.
    help me

    • Grzegorz Juszczak December 23, 2016 at 00:01

      Check OpenStack all-in-one node logs, not instance (vm) logs.

  24. bathie sene January 9, 2017 at 13:23

    Hello i cree a vm cirros on openstack mitaka it gives me as login cirros and password cubswin 🙂 by default but I can not find in my keyboard the characters 🙂 help me change the password on command line a From my server or find its characters on my keyboard azerty

  25. bathie sene January 9, 2017 at 23:45

    I cree a vm cirros on openstack mitaka it gives me as login cirros and password cubswin : ) by default but I can not find in my keyboard the characters : ) help me change the password on command line a From my server or find its characters on my keyboard azerty

  26. bathie sene January 11, 2017 at 12:45

    I recently installed OpenStack Mitaka on my benchmark and imported few images from the CentOS, Cirros and Ubuntu repositories. After the virtual machine started, I tried to connect through the VNC console. Unfortunately, I did not know the username and password and the information was not available on the page where the image was downloaded. How I should do to set the username and password

    • Grzegorz Juszczak January 11, 2017 at 22:55


      For Cirros images credentials are well known: cirros / cubswin:) – you even have it written when you check console log from the booting instance.

      For Ubuntu image, as far as I know, the login account is ubuntu, but the password is disabled, since many of the image vendors disable SSH password authentication by default, so you have to boot the image with an injected key pair. You can easily generate and download key-pair when launching instance in Horizon dashboard and then you have to login to the Instance using downloaded key, example:

      ssh -i path_to_key_file ubuntu@instance_floating_ip

      I hope it helped

  27. bathie sene January 12, 2017 at 10:43

    Thank you Grzegorz Juszczak
    I acceded to the vm cirros which but I do not manage to acceder the Internet I made an ifconfig but I do not see IP address on the vm and for so I had added address Ip floating when creating the vm. I also created a router but on the second interface of the router it puts me down. I also managed to ping the address of this interface via my physical machine.
    help me

  28. Arijit January 22, 2017 at 15:15

    Hi Grzegorz,
    During installation I am facing some problem as listed below:
    1. Liberty rdo package v 2 not found. It is updated to v 5. Will it create any problem?
    2. During Testing if puppet……. step I got the error with aodhclient pckage not found. Can u pls help me?

    • Grzegorz Juszczak January 24, 2017 at 23:51

      Hi Arijit

      I see the link to v2 is removed now as obsolete, so you need to download and install v5 – you have no other option by the way. It’s upgraded package so it shouldn’t cause any problems and still this tutorial should be relevant for v5 installation, although I haven’t tested for v5.

      Regarding the missing package, can you paste the corresponding part of the log showing the missing package error?

Leave a Reply

Name *
Email *

This site uses Akismet to reduce spam. Learn how your comment data is processed.