Step-by-Step Tutorial: Install OpenStack on CentOS 7 using Packstack

Step-by-Step Tutorial: Install OpenStack on CentOS 7 using Packstack

Step by Step Guide to install openstack on CentOS 7 or RHEL 7 Linux. Openstack installation guide using packstack CentOS 7. Step by step installation guide of packstack using packstack in RHEL or CentOS 7 Linux. Install OpenStack on CentOS 7 Linux.Openstack installation guide single node on CentOS 7. Step by step guide for openstack installation using packstack on CentOS 7 or RHEL 7 Linux server. Install Openstack on CentOS 7. openstack installation on centos 7 step by step. How to install openstack on CentOS 7 using Packstack.

image

In my earlier articles I shared the steps to bring up an openstack environment using tripleo deployment with an undercloud and overcloud. You should use tripleo deployment if you wish to bring up a multi node openstack environment. Although even with packstack you can bring up a multi node openstack deployment with two or more compute node but you cannot have more than one controller node when installing openstack using packstack. In this article I will share step by step tutorial to install OpenStack on CentOS 7 and RHEL 7 using Packstack.

In this article I have used KVM to create my Virtual Machines, I have written another article to install OpenStack on CentOS 7 (multinode) using Oracle VirtualBox installed on a Windows Laptop.

HINT
I would recommend to configure one click installation using Network PXE Boot Server. Using PXE server you can install Oracle Virtual Machines or KVM based Virtual Machines or any type of physical server without any manual intervention saving time and effort.

What is OpenStack?

OpenStack project, which is also called a cloud operational system, consists of a number of different projects developing separate subsystems. Any OpenStack installation can include only a part of them. Some subsystems can even be used separately or as part of any other OpenSource project. Their number is increasing from version to version of OpenStack project, both through the appearance of new ones and the functionality split of the existing ones. For example, nova-volume service was extracted as a separate Cinder project.

Make sure the hypervisor is enabled and supported on your blade

# grep -E ' svm | vmx' /proc/cpuinfo

You should see svm or vmx among the flags supported by the processor. Also if you execute the command:

# lsmod | grep kvm
kvm_intel 143187 3
kvm 455843 1 kvm_intel

or

# lsmod | grep kvm
kvm_amd 60314 3
kvm 461126 1 kvm_amd

you should see two kernel modules loaded in the memory. The kvm is the module independent of the vendor, and the kvm_intel or kvm_amd executes VT-x or AMD-V functionality, respectively


Red Hat OpenStack Platform (60-day trial)
https://www.redhat.com/en/insights/openstack

RDO by Red Hat
https://www.rdoproject.org/

Mirantis OpenStack
https://www.mirantis.com/products/mirantis-openstacksoftware/

Ubuntu OpenStack
http://www.ubuntu.com/cloud/openstack

SUSE OpenStack Cloud (60-day trial)
https://www.suse.com/products/suse-openstack-cloud/

IMPORTANT
If you are using a Virtual Environment then you can take a snapshot before you install and configure openstack so that you can revert back in case of any failures. On a physical environment you can backup your partition and later restore partition in case of any failures.

Install Openstack On CentOS 7 using Packstack

Packstack provides an easy way to deploy an OpenStack Platform environemnt on one or several machines because it is customizable through a answer file, which contains a set of parameters that allows custom configuration of underlying Openstack platform service.


What is Answer File?

Packstack provides by default an answer file template that deploys an all in one environment.When you run thepackstackcommand non-interactively you must provide your configuration options via a text file, referred to as an answer file, instead of via standard input.


Step 1: Bring UP the physical host server

Firstly you need a base server on which you will create your entire Openstack cloud for which I have bought my server with RHEL 7.4

My setup detail

physical node details for openstack step by step installation

  • Next login to your server and register it with Red Hat Subscription
  • Install Virtual Machine Manager (if not already installed) using the “Application Installer”
  • Next start creating your virtual machines as described in below chapters

Step 2: Configure BIND DNS Server

A DNS server is recommended before you install OpenStack on CentOS 7 using Packstack.

Below are my sample configuration files

# cd /var/named/chroot/var/named

Forward zone configuration file for the controller and compute nodes

# cat example.zone
$TTL 1D
@   IN SOA example. root (
                    0   ; serial
                    1D   ; refresh
                    1H   ; retry
                    1W   ; expire
                    3H )  ; minimum
@       IN NS example.
        IN A  127.0.0.1
        IN A  10.43.138.12
openstack   IN A  10.43.138.12
controller   IN A  192.168.122.49
compute    IN A  192.168.122.215
compute-rhel  IN A  192.168.122.13
controller-rhel IN A  192.168.122.12

First reverse zone file for my physical host server hosting OpenStack

# cat example.rzone
$TTL 1D
@   IN SOA example. root.example. (
                    0   ; serial
                    1D   ; refresh
                    1H   ; retry
                    1W   ; expire
                    3H )  ; minimum
@   IN NS example.
    IN A  127.0.0.1
    IN PTR localhost.
12   IN PTR openstack.example.

Second reverse zone file for controller and compute node

# cat openstack.rzone
$TTL 1D
@   IN SOA example. root.example. (
                    0   ; serial
                    1D   ; refresh
                    1H   ; retry
                    1W   ; expire
                    3H )  ; minimum
@   IN NS example.
    IN A  127.0.0.1
    IN PTR localhost.
49   IN PTR controller.example.
215  IN PTR compute.example.
12   IN PTR controller-rhel.example.
13   IN PTR compute-rhel.example.

Step 3: Bring UP Compute VM

One of the basic services is OpenStack Compute (Nova). This service is installed on all cluster computer nodes. It manages the level of abstraction of virtual equipment (processors, memory, block devices, network adapters). Nova provides the management of instances of virtual machines addressing the hypervisor and giving such commands as it is launching and stopping.

My setup detail

compute node details


Step 4: Bring UP Controller VM

The Controller node is where most of the shared OpenStack services and other tools run. It supplies API, scheduling, and other shared services for the cloud.

I have already shared the configuration for my Virtual Machine. Since controller node will only host important openstack services hence we do not need too assign too much resource to this node.

My setup details

controller node details

Next execute the packstack utility on the controller node to install OpenStack on CentOS 7 using the syntax as shown below

[root@controller-rhel ~]# packstack --answer-file /root/answers.txt
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20180707-225026-DOdBB6/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 ]
Installing time synchronization via NTP      [ DONE ]
Setting up CACERT                 [ DONE ]
Adding AMQP manifest entries            [ DONE ]
Adding MariaDB manifest entries          [ DONE ]
Adding Apache manifest entries           [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Adding Keystone manifest entries          [ DONE ]
Adding Glance Keystone manifest entries      [ DONE ]
Adding Glance manifest entries           [ DONE ]
Adding Cinder Keystone manifest entries      [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Adding Cinder manifest entries           [ DONE ]
Adding Nova API manifest entries          [ DONE ]
Adding Nova Keystone manifest entries       [ DONE ]
Adding Nova Cert manifest entries         [ DONE ]
Adding Nova Conductor manifest entries       [ DONE ]
Creating ssh keys for Nova migration        [ DONE ]
Gathering ssh host keys for Nova migration     [ DONE ]
Adding Nova Compute manifest entries        [ DONE ]
Adding Nova Scheduler manifest entries       [ DONE ]
Adding Nova VNC Proxy manifest entries       [ DONE ]
Adding OpenStack Network-related Nova manifest entries[ DONE ]
Adding Nova Common manifest entries        [ DONE ]
Adding Neutron VPNaaS Agent manifest entries    [ DONE ]
Adding Neutron FWaaS Agent manifest entries    [ DONE ]
Adding Neutron LBaaS Agent manifest entries    [ DONE ]
Adding Neutron API manifest entries        [ DONE ]
Adding Neutron Keystone manifest entries      [ DONE ]
Adding Neutron L3 manifest entries         [ DONE ]
Adding Neutron L2 Agent manifest entries      [ DONE ]
Adding Neutron DHCP Agent manifest entries     [ DONE ]
Adding Neutron Metering Agent manifest entries   [ DONE ]
Adding Neutron Metadata Agent manifest entries   [ DONE ]
Adding Neutron SR-IOV Switch Agent manifest entries[ DONE ]
Checking if NetworkManager is enabled and running [ DONE ]
Adding OpenStack Client manifest entries      [ DONE ]
Adding Horizon manifest entries          [ DONE ]
Adding post install manifest entries        [ DONE ]
Copying Puppet modules and manifests        [ DONE ]
Applying 192.168.122.13_prescript.pp
Applying 192.168.122.12_prescript.pp
192.168.122.13_prescript.pp:            [ DONE ]
192.168.122.12_prescript.pp:            [ DONE ]
Applying 192.168.122.13_chrony.pp
Applying 192.168.122.12_chrony.pp
192.168.122.13_chrony.pp:             [ DONE ]
192.168.122.12_chrony.pp:             [ DONE ]
Applying 192.168.122.12_amqp.pp
Applying 192.168.122.12_mariadb.pp
192.168.122.12_amqp.pp:              [ DONE ]
192.168.122.12_mariadb.pp:             [ DONE ]
Applying 192.168.122.12_apache.pp
192.168.122.12_apache.pp:             [ DONE ]
Applying 192.168.122.12_keystone.pp
Applying 192.168.122.12_glance.pp
Applying 192.168.122.12_cinder.pp
192.168.122.12_keystone.pp:            [ DONE ]
192.168.122.12_cinder.pp:             [ DONE ]
192.168.122.12_glance.pp:             [ DONE ]
Applying 192.168.122.12_api_nova.pp
192.168.122.12_api_nova.pp:            [ DONE ]
Applying 192.168.122.12_nova.pp
Applying 192.168.122.13_nova.pp
192.168.122.12_nova.pp:              [ DONE ]
192.168.122.13_nova.pp:              [ DONE ]
Applying 192.168.122.13_neutron.pp
Applying 192.168.122.12_neutron.pp
192.168.122.12_neutron.pp:             [ DONE ]
192.168.122.13_neutron.pp:             [ DONE ]
Applying 192.168.122.12_osclient.pp
Applying 192.168.122.12_horizon.pp
192.168.122.12_osclient.pp:            [ DONE ]
192.168.122.12_horizon.pp:             [ DONE ]
Applying 192.168.122.13_postscript.pp
Applying 192.168.122.12_postscript.pp
192.168.122.12_postscript.pp:           [ DONE ]
192.168.122.13_postscript.pp:           [ DONE ]
Applying Puppet manifests             [ DONE ]
Finalizing                    [ DONE ]
**** Installation completed successfully ******
Additional information:
* File /root/keystonerc_admin has been created on OpenStack client host 192.168.122.12. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://192.168.122.12/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* The installation log file is available at: /var/tmp/packstack/20180707-225026-DOdBB6/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20180707-225026-DOdBB6/manifests

If everything goes nice then you should see all GREEN and at the end of you will get the link to your dashboard (as highlighted). So this means our openstack installation on RHEL/CentOS 7 is complete.

NOTE
However you can rerun PackStack with option -d if you need to update the configuration.

Step 6: Check OpenStack service status

Install openstack-utils to check the status of all the openstack services

# yum -y install openstack-utils

Next check the status

[root@controller-rhel ~]# openstack-status
== Nova services ==
openstack-nova-api:          active
openstack-nova-cert:          active
openstack-nova-compute:        inactive (disabled on boot)
openstack-nova-network:        inactive (disabled on boot)
openstack-nova-scheduler:       active
openstack-nova-conductor:       active
== Glance services ==
openstack-glance-api:         active
openstack-glance-registry:       active
== Keystone service ==
openstack-keystone:          inactive (disabled on boot)
== Horizon service ==
openstack-dashboard:          active
== neutron services ==
neutron-server:            active
neutron-dhcp-agent:          active
neutron-l3-agent:           active
neutron-metadata-agent:        active
neutron-openvswitch-agent:       active
== Cinder services ==
openstack-cinder-api:         active
openstack-cinder-scheduler:      active
openstack-cinder-volume:        active
openstack-cinder-backup:        inactive (disabled on boot)
== Support services ==
mysqld:                unknown
libvirtd:               active
openvswitch:              active
dbus:                 active
target:                active
rabbitmq-server:            active
memcached:               active
== Keystone users ==
Warning keystonerc not sourced

ALSO READ:
Check Openstack version and mapped release information


Step 7: Source keystonerc file

Now once you install OpenStack on CentOS 7, next you can source your keystoncerc file to get more detailed list of openstack-service status. This keystonerc file will be available at the home folder of the root user as shown below:

[root@controller-rhel ~]# ls -l keystonerc_admin
-rw-------. 1 root root 229 Jul 7 22:57 keystonerc_admin
[root@controller-rhel ~]# pwd
/root

[root@controller-rhel ~]# source keystonerc_admin

Next check the status of openstack services

[root@controller-rhel ~(keystone_admin)]#openstack-status
== Nova services ==
openstack-nova-api:          active
openstack-nova-cert:          active
openstack-nova-compute:        inactive (disabled on boot)
openstack-nova-network:        inactive (disabled on boot)
openstack-nova-scheduler:       active
openstack-nova-conductor:       active
== Glance services ==
openstack-glance-api:         active
openstack-glance-registry:       active
== Keystone service ==
openstack-keystone:          inactive (disabled on boot)
== Horizon service ==
openstack-dashboard:          active
== neutron services ==
neutron-server:            active
neutron-dhcp-agent:          active
neutron-l3-agent:           active
neutron-metadata-agent:        active
neutron-openvswitch-agent:       active
== Cinder services ==
openstack-cinder-api:         active
openstack-cinder-scheduler:      active
openstack-cinder-volume:        active
openstack-cinder-backup:        inactive (disabled on boot)
== Support services ==
mysqld:                unknown
libvirtd:               active
openvswitch:              active
dbus:                 active
target:                active
rabbitmq-server:            active
memcached:               active
== Keystone users ==
+----------------------------------+---------+---------+-------------------+
|        id        | name | enabled |   email   |
+----------------------------------+---------+---------+-------------------+
| e97f18a9994e4b99bcc0e6fe8db95cd3 | admin | True | root@localhost |
| dccbaca5e2ee4866b343573678ec3bf7 | cinder | True | cinder@localhost |
| 7dec80c93f8a4aafa1559a59e6bf606c | glance | True | glance@localhost |
| 778e4fbefdfa4329bf9b7143ce6ffe74 | neutron | True | neutron@localhost |
| e3d85ca8a8bb4ba5a9457712ce5814f5 | nova | True | nova@localhost |
+----------------------------------+---------+---------+-------------------+
== Glance images ==
+----+------+
| ID | Name |
+----+------+
+----+------+
== Nova managed services ==
+----+------------------+------------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary     | Host         | Zone  | Status | State | Updated_at        | Disabled Reason |
+----+------------------+------------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-consoleauth | controller-rhel.example| internal | enabled | up  | 2018-07-07T18:02:59.000000 | -       |
| 2 | nova-scheduler | controller-rhel.example| internal | enabled | up  | 2018-07-07T18:03:00.000000 | -       |
| 3 | nova-conductor | controller-rhel.example| internal | enabled | up  | 2018-07-07T18:03:01.000000 | -       |
| 4 | nova-cert    | controller-rhel.example| internal | enabled | up  | 2018-07-07T18:02:57.000000 | -       |
| 5 | nova-compute  | compute-rhel.example | nova  | enabled | up  | 2018-07-07T18:03:04.000000 | -       |
+----+------------------+------------------------+----------+---------+-------+----------------------------+-----------------+
== Nova networks ==
+----+-------+------+
| ID | Label | Cidr |
+----+-------+------+
+----+-------+------+
== Nova instance flavors ==
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name   | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512   | 1  | 0    |   | 1  | 1.0    | True   |
| 2 | m1.small | 2048   | 20 | 0    |   | 1  | 1.0    | True   |
| 3 | m1.medium | 4096   | 40 | 0    |   | 2  | 1.0    | True   |
| 4 | m1.large | 8192   | 80 | 0    |   | 4  | 1.0    | True   |
| 5 | m1.xlarge | 16384  | 160 | 0    |   | 8  | 1.0    | True   |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
== Nova instances ==
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

So as you see it gives me a detailed status of all the openstack services.


Step 8: Access OpenStack Horizon Dashboard

So now our OpenStack installation is complete using packstack on CentOS/RHEL 7 and we can see our services are also up and running properly. Finally now you can login to the horizon dashboard.

openstack horizon dashboard

Lastly I hope the steps from the article to install OpenStack on CentOS 7 Linux was helpful. So, let me know your suggestions and feedback using the comment section.

Deepak Prasad

Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, networking, and security, delivering robust and efficient solutions for diverse projects.