Multi Node OpenStack Installation on CentOS 7 via Packstack

OpenStack is an open source cloud software which provides infrastructure-as-a-service (IaaS). It can be installed on single and multiple nodes.

In this article we will deploy openStack on three nodes ( compute + controller + network ) on CentOS 7.x using RDO repository and packstack utility. For Single Node OpenStack Installation refer the below :

How to Install Single Node OpenStack on CentOS 7

In article i am using three virtual machines hosted on VirtualBox and each VM has a single LAN interface. Below are architecture details :

Controller Node Details :

  • Hostname = controller.example.com
  • IP Address = 192.168.1.30
  • OS = CentOS 7.x
  • DNS = 192.168.1.11

Following OpenStack Components will installed on controller node :

  1. Keystone
  2. Glance
  3. swift
  4. Cinder
  5. Horizon
  6. Neutron
  7. Nova novncproxy
  8. Novnc
  9. Nova api
  10. Nova Scheduler
  11. Nova-conductor

Compute Node Details :

  • Hostname = compute.example.com
  • IP Address = 192.168.1.31
  • OS = CentOS 7.X
  • DNS = 192.168.1.11

Following OpenStack Components will installed on compute node :

  1. Nova Compute
  2. Neutron – Openvswitch Agent

Network Node Details :

  • Hostname = network.example.com
  • IP Address = 192.168.1.32
  • OS = CentOS 7.x
  • DNS = 192.168.1.11

Following OpenStack Components will installed on network node :

  1. Neutron Server
  2. Neturon DHCP agent
  3. Neutron- Openswitch agent
  4. Neutron L3 agent

Perform the Following Steps for Installation :

Step:1 Update the nodes using below command.

Use the below command on all three nodes to update all installed packages.

# yum -y update ; reboot

Step:2 Update /etc/hosts file and Hostname

Set the hostname on all the three nodes using below command , in case it is not set.

# hostnamectl set-hostname 'new_hostname'

Update the /etc/hosts file if you don’t have your local DNS configured.

192.168.1.30 controller.example.com controller
192.168.1.31 compute.example.com    compute
192.168.1.32 network.example.com    network

Step:3 Disable SELinux and Network Manager on all three nodes.

Use below command to disable SELinux on all three nodes.

# setenforce 0

Disabled SELinux permanently by the changing the parameter ‘SELINUX=disabled’ in the file ‘/etc/sysconfig/selinux

Use below commands to disable Network Manager on all three nodes.

# systemctl stop NetworkManager
# systemctl disable NetworkManager
# reboot

Step:4 Set Passwordless authentication from Controller node to Compute & Network Node.

Run the below commands from Controller node.

[root@controller ~]# ssh-keygen
[root@controller ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
[root@controller ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

Now check :

[root@controller ~]# ssh compute 
Last login: Sun Apr 3 00:03:44 2016 from controller.example.com
[root@compute ~]# hostname
compute.example.com
[root@compute ~]#

[root@controller ~]# ssh network
Last login: Sun Apr 3 00:04:20 2016 from controller.example.com
[root@network ~]# hostname
network.example.com
[root@network ~]#

Step:5 Enable RDO repository and install packstack utility

Use below yum command to enable RDO repository and install packstack utility only on controller node.

[root@controller ~]# yum install -y https://www.rdoproject.org/repos/rdo-release.rpm
[root@controller ~]# yum install -y openstack-packstack

Step:6 Generate and customize answer file

Use below command to generate answer file.

[root@controller ~]# packstack --gen-answer-file=/root/answer.txt
[root@controller ~]#

Edit the answer file and Specify the ip address of controller, compute and network node. Apart from this also specify the passwords of different services and disable the components like Demo version and Ceilometer.

[root@controller ~]# vi /root/answer.txt
........................................
CONFIG_CONTROLLER_HOST=192.168.1.30
CONFIG_COMPUTE_HOSTS=192.168.1.31
CONFIG_NETWORK_HOSTS=192.168.1.32
CONFIG_PROVISION_DEMO=n
CONFIG_CEILOMETER_INSTALL=n
CONFIG_HORIZON_SSL=y
CONFIG_NTP_SERVERS=<Specify NTP Server IP >
CONFIG_KEYSTONE_ADMIN_PW=<Specify New_Password>
..........................................

Note : In case if you have don’t NTP server then you can leave NTP parameter as it is, but it is highly recommended that we should use ntp server for time syncing.

Step:7 Start Installation using packstack command.

Now we are good to start the openstack installation using packstack command. Run the below command from Controller node.

[root@controller ~]# packstack --answer-file=/root/answer.txt

Once the installation is completed successfully we will get below:

liberty-openstack-installation-successfull-message

After the installation, a new interface ‘br-ex‘ will created in the network node. Add network interface (enp0s3 or eth0 or may be other name ) to the Open vSwitch ‘br-ex’ bridge as a port and assign the ip address of ‘ enp0s3’ to ‘ br-ex’

br-ex-interface-network-node

[root@network ~]# cd /etc/sysconfig/network-scripts/
[root@network network-scripts]# cp ifcfg-enp0s3 ifcfg-br-ex
[root@network network-scripts]# vi ifcfg-enp0s3
DEVICE=enp0s3
HWADDR=08:00:27:37:4C:EF
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes

[root@network network-scripts]# vi ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.1.32
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.11
ONBOOT=yes

Restart the Network service using below command.

[root@network network-scripts]# systemctl restart network
[root@network network-scripts]#

configure-br-ex-network-node

Step:8 Access Openstack Dashboard.

Now try to access the openstack dashboard from the browser using below.

https://192.168.1.30/dashboard

Use user name as ‘admin’ and password that you specify in the answer.txt file.

Login-OpenStack-Liberty- Dashboard

Click on ‘Connect’

Usage-Overview-OpenStack-Dashboard

Note : In case you are getting ‘Error: Unable to retrieve volume limit information’ in the dashboard, this can be fixed by adding the following in the cinder.conf file on the controller node.

[root@controller ~]# vi /etc/cinder/cinder.conf
....................................
[keystone_authtoken]
auth_uri = http://<Controller_IP>:5000
auth_url = http://<Controller_IP>:35357
auth_plugin = password
project_domain_id = default 
user_domain_id = default 
project_name = services 
username = cinder 
password = <Cinder_Password> {Search CONFIG_CINDER_KS_PW in answer file}
.....................................

Restart the Cinder Service.

[root@controller ~]# systemctl restart  openstack-cinder-api.service
[root@controller ~]# systemctl restart  openstack-cinder-backup.service
[root@controller ~]# systemctl restart  openstack-cinder-scheduler.service
[root@controller ~]# systemctl restart  openstack-cinder-volume.service

As we are able to login in the dashboard, so we can say that Installation part is completed. Now the next task is to launch an instance, for that we need to perform following tasks .

  • Create Project and Users
  • Assign Users to the Project.
  • Create image and flavors
  • Define Internal and external network
  • Create Router
  • Create Security Rules for Virtual Machine or instance.

To accomplish above task refer the below URL :

Reference : – https://www.rdoproject.org/install/packstack/

40 thoughts on “Multi Node OpenStack Installation on CentOS 7 via Packstack”

  1. Hey

    This is Awesome tutorial …………..thanks ……I have an issue ………please guide me in following:
    I have the following nodes:
    Controller Node
    Network Node
    Compute Node 1
    Compute Node 2

    Please note that I have added “compute node 2” after installing 3 Node Openstack. I am able to successfully launch Instances on both of the compute node but the instance from compute node 1 is able to get an IP from my tenant network and able to ping outside……..but my compute node 2 instance is not getting IP Address from my tenant private network. I am stuck here ……please help me on it.

    I want to know what compute node host networking I need to do on compute node 2 like ovs port and ovs bridge.

    Waiting for your response ………..thanks in advance ……………:)

  2. hi, I wonder why this error occurred?
    ERROR : [Errno 2] No such file or directory: ‘/etc/pki/tls/certs/selfcert.crt’

  3. Hi,
    Thanks for the great article. Could you please share the Virtual machines interface details for all the nodes. I guess I am missing something there.

    Thanks

  4. Hi I have done the all steps and it gto success with done but after that i am unable to access dashboard on browser.. it throws the below error.

    Not Found

    The requested URL /dashboard was not found on this server.

  5. Hi,

    Could you please tell what is the mode of Network adapter you choose in virtualbox settings ? is that NAT or Bridged adapter or host only ? if it is host only adapter how you managed to communicate with external network ? please clarify thanks

  6. Nice Post, its really helps me.

    I have completed installation after two weeks.

    Dashboard is not working. (Only one time it worked.)

    the keystone file and answer file missed in home directory!!.

    When I login to the dashboard. I get the bellow error.

    “An error occurred authenticating. Please try again later.”

    Also Does it suggestion to use this same packstack installation for productions. ?

    Looking forward for your valuable reply.

    1. Pradeep Kumar

      Hi Gopinath,

      It is recommended to use TripleO for Openstack deployment in Production Environment. Packstack is generally used for Openstack POC(Proof of Concept).

      For Dashboard error, please make sure all the services of openstack are up and running, use the command ” openstack-service status” from the terminal to verify the openstack services.

  7. please help me I type “packstack –gen-answer-file = / root / answer.txt” it generates me an error “ERROR: Failed to load plugin from file ssl_001.py” what should I do? please help me.

Leave a Comment

Your email address will not be published. Required fields are marked *