Category Archive OpenStack

By

Manually deploy OpenStack on Ubuntu 16.04

There is many ways deploying OpenStack in production and POC environment. TEKYHOST provides consulting and support for OpenStack deployments. Most deployment use some sort of automation like Ansible, Puppet, Chief and so on. In this how to will look into installing and configuring OpenStack on Ubuntu 16.04 manually. We will use virtual machine and install all-in-one but procedure for installing OpenSTack on multiple systems would be the same with exception that some components installed on different systems.

We will install everything on virtual system but in production you will need to use hardware and put much more thought in braking down your modules and figuring out redundancy and so on. The goal of this tutorial is just to show how everything is installed.

This is long process with a lot of manual typing but it will let us see exactly how each component is installed and configured.

The step by step process will include

  • Configuring the database server
  • Configuring the message queue
  • Configuring the memcached server
  • Configuring the identity service (Keystone)
  • Configuring the image service (Glance)
  • Configuring the compute service (Nova)
  • Installing and configuring a compute node (nova-compute)
  • Configuring the networking service (neutron)
  • Installing and configuring a compute node (neutron)
  • Installing the OpenStack dashboard
  • Adding the compute node to the OpenStack cluster
We will be using password1 as password and IP 192.168.0.188 as controller’s management interface. When you run command’s please substitute with your own related information.

Prerequisites

  • VirtualBox with 1 VM running 6GB RAM and 30GB HDD, 2vCPU, 2 NIC’s in Bridged mode
  • Hostnames should be resolvable /etc/hosts and hostname should be set to controller.local in /etc/network/hostname
  • 127.0.0.1 localhost
    192.168.0.188 controller.local controller
    
  • 2 nics – One of which configured with static IP (192.168.0.188). Both can for now be connected to same 192.168.0.0/24 network.
    
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    source /etc/network/interfaces.d/*
    # The loopback network interface
    auto lo
    iface lo inet loopback
    # The primary network interface
    auto enp0s3
    iface enp0s3 inet static
    address 192.168.0.188
    network 192.168.0.0
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 8.8.8.8
    broadcast 192.168.0.255
    # The provider network interface
    auto enp0s8
    iface enp0s8 inet manual
    up ip link set dev $IFACE up
    down ip link set dev $IFACE down
    
  • Configure NTP
    apt install chrony
    service chrony restart
    
  • Upgrade the system and configure OpenStack repository
    apt install software-properties-common
    add-apt-repository cloud-archive:ocata
    apt update && apt dist-upgrade -y
    reboot
    apt install python-openstackclient crudini -y
    
    

Installation

Database server

Install mariadb

apt install mariadb-server python-pymysql

Create configuration file

/etc/mysql/mariadb.conf.d/90-openstack.cnf
[mysqld]
bind-address = 192.168.0.188
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

Restart services and run secure_installation

service mysql restart
mysql_secure_installation

Creating database for OpenStack services

echo "CREATE DATABASE keystone;"|mysql
echo "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'password1';"|mysql
echo "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'password1';"|mysql
echo "CREATE DATABASE glance;"|mysql
echo "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'password1';"|mysql
echo "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'password1';"|mysql
echo "CREATE DATABASE nova_api;"|mysql
echo "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'password1';"|mysql
echo "GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'password1';"|mysql
echo "CREATE DATABASE nova;"|mysql
echo "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'password1';"|mysql
echo "GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'password1';"|mysql
echo "CREATE DATABASE nova_cell0;"|mysql
echo "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'password1';"|mysql
echo "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'password1';"|mysql
echo "CREATE DATABASE neutron;"|mysql
echo "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password1';"|mysql
echo "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'password1';"|mysql
echo "CREATE DATABASE cinder;"|mysql
echo "GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'password1';"|mysql
echo "GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'password1';"|mysql

Message queue

Install RabbitMQ, an AMQP broker

apt install rabbitmq-server
rabbitmqctl add_user openstack password1
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Setup memcached server

apt install memcached python-memcache
service memcached restart

identity service KeyStone

Install components

apt install keystone

Make configuration changes

crudini --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:password1@controller/keystone
crudini --set /etc/keystone/keystone.conf token provider fernet
su -s /bin/sh -c "keystone-manage db_sync" keystone
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
keystone-manage bootstrap --bootstrap-password password1 \
--bootstrap-admin-url http://controller.local:35357/v3/ \
--bootstrap-internal-url http://controller.local:5000/v3/ \
--bootstrap-public-url http://controller.local:5000/v3/ \
--bootstrap-region-id RegionOne

Configure apache

sed -i -e '1iServerName controller.local\' /etc/apache2/apache2.conf
service apache2 restart
rm -f /var/lib/keystone/keystone.db

Create file that contains environment variables that can be loaded any time.

cd
 vi admin-rc 
export OS_USERNAME=admin
export OS_PASSWORD=password1
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller.local:35357/v3
export OS_IDENTITY_API_VERSION=3

Load the environment variables from the file. Then
verify the configuration

reboot
source ~/admin-rc
openstack token issue
openstack user list

Now we need to set up the domain, project, users, roles, and endpoints that will be used by various OpenStack services

openstack project create --domain default \
--description "Service Project" service
openstack project create --domain default \
--description "Demo Project" demo

Create a non-admin user called demo user and map the non-privileged role called user role for the demo user

openstack user create --domain default \
--password-prompt demo
openstack role create user
openstack role add --project demo --user demo user

Verify that the identity service was installed and configured correctly

unset OS_AUTH_URL OS_PASSWORD
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue

Create another OpernRC file for the demo account

vi demo-openrc 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=password1
export OS_AUTH_URL=http://controller.local:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

Verify the environment file for the admin and demo account

source ~/demo-openrc
openstack token issue
source ~/admin-rc
openstack token issue

Image service Glance

Create service entety and API endpoints

source ~/admin-rc

openstack user create --domain default --password-prompt glance
openstack role add --project service --user glance admin

openstack service create --name glance \
--description "OpenStack Image" image
openstack endpoint create --region RegionOne \
image public http://controller.local:9292
openstack endpoint create --region RegionOne \
image internal http://controller.local:9292
openstack endpoint create --region RegionOne \
image admin http://controller.local:9292

Install Glance binaries

apt install glance wget -y

Edit /etc/glance/glance-api.conf with the following settigns

crudini --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:password1@controller/glance
crudini --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:password1@controller/glance
crudini --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
crudini --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:35357
crudini --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers controller:11211
crudini --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
crudini --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name default
crudini --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name default
crudini --set /etc/glance/glance-api.conf keystone_authtoken project_name service
crudini --set /etc/glance/glance-api.conf keystone_authtoken username glance
crudini --set /etc/glance/glance-api.conf keystone_authtoken password password1
crudini --set /etc/glance/glance-api.conf paste_deploy flavor keystone
crudini --set /etc/glance/glance-api.conf glance_store stores file,http
crudini --set /etc/glance/glance-api.conf glance_store default_store file
crudini --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/


crudini --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
crudini --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:35357
crudini --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers controller:11211
crudini --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
crudini --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name default
crudini --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name default
crudini --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
crudini --set /etc/glance/glance-registry.conf keystone_authtoken username glance
crudini --set /etc/glance/glance-registry.conf keystone_authtoken password password1
crudini --set /etc/glance/glance-registry.conf paste_deploy flavor keystone

populate the image service database

su -s /bin/sh -c "glance-manage db_sync" glance
service glance-registry restart
service glance-api restart

Download a test image from the Internet, and verify that it can be uploaded to the image server.

source ~/admin-rc
wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
openstack image create "cirros" \
--file cirros-0.3.5-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
openstack image list

Compute service Nova

source ~/admin-rc
Defining the Nova service and API endpoints in KeyStone

openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
openstack endpoint create --region RegionOne compute public http://controller.local:8774/v2.1
openstack endpoint create --region RegionOne compute internal http://controller.local:8774/v2.1
openstack endpoint create --region RegionOne compute admin http://controller.local:8774/v2.1
openstack user create --domain default --password-prompt placement
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
openstack endpoint create --region RegionOne placement public http://controller.local:8778
openstack endpoint create --region RegionOne placement internal http://controller.local:8778
openstack endpoint create --region RegionOne placement admin http://controller.local:8778

Installing and configuring the Nova components

apt install nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler nova-placement-api -y

Make changes to configuration file

crudini --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:password1@controller/nova_api
crudini --set /etc/nova/nova.conf database connection mysql+pymysql://nova:password1@controller/nova
crudini --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:password1@controller
crudini --set /etc/nova/nova.conf api auth_strategy keystone
crudini --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
crudini --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357
crudini --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
crudini --set /etc/nova/nova.conf keystone_authtoken auth_type password
crudini --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
crudini --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
crudini --set /etc/nova/nova.conf keystone_authtoken project_name service
crudini --set /etc/nova/nova.conf keystone_authtoken username nova
crudini --set /etc/nova/nova.conf keystone_authtoken password password1
crudini --set /etc/nova/nova.conf DEFAULT use_neutron True
crudini --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
crudini --set /etc/nova/nova.conf glance api_servers http://controller:9292
crudini --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
crudini --set /etc/nova/nova.conf placement os_region_name RegionOne
crudini --set /etc/nova/nova.conf placement project_domain_name Default
crudini --set /etc/nova/nova.conf placement project_name service
crudini --set /etc/nova/nova.conf placement auth_type password
crudini --set /etc/nova/nova.conf placement user_domain_name Default
crudini --set /etc/nova/nova.conf placement auth_url http://controller:35357/v3
crudini --set /etc/nova/nova.conf placement username placement
crudini --set /etc/nova/nova.conf placement password password1
crudini --set /etc/nova/nova.conf scheduler discover_hosts_in_cells_interval 300
crudini --set /etc/nova/nova.conf DEFAULT my_ip 192.168.0.188
crudini --set /etc/nova/nova.conf vnc enabled true
crudini --set /etc/nova/nova.conf vnc vncserver_listen 192.168.0.188
crudini --set /etc/nova/nova.conf vnc vncserver_proxyclient_address 192.168.0.188

Populate the Nova service database and then finalize the installation

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova

ignore any deprecation messages

Verify installation

nova-manage cell_v2 list_cells

finalize the Nova installation by restarting all of the Nova components

service nova-api restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart

Installing and configuring a compute node

apt install nova-compute -y

Make configuration changes

crudini --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:password1@controller
crudini --set /etc/nova/nova.conf api auth_strategy keystone
crudini --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000
crudini --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:35357
crudini --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
crudini --set /etc/nova/nova.conf keystone_authtoken auth_type password
crudini --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
crudini --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
crudini --set /etc/nova/nova.conf keystone_authtoken project_name service
crudini --set /etc/nova/nova.conf keystone_authtoken username nova
crudini --set /etc/nova/nova.conf keystone_authtoken password password1
crudini --set /etc/nova/nova.conf DEFAULT use_neutron True
crudini --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
crudini --set /etc/nova/nova.conf glance api_servers http://controller:9292
crudini --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
crudini --set /etc/nova/nova.conf placement os_region_name RegionOne
crudini --set /etc/nova/nova.conf placement project_domain_name Default
crudini --set /etc/nova/nova.conf placement project_name service
crudini --set /etc/nova/nova.conf placement auth_type password
crudini --set /etc/nova/nova.conf placement user_domain_name Default
crudini --set /etc/nova/nova.conf placement auth_url http://controller:35357/v3
crudini --set /etc/nova/nova.conf placement username placement
crudini --set /etc/nova/nova.conf placement password password1
crudini --set /etc/nova/nova.conf scheduler discover_hosts_in_cells_interval 300
crudini --set /etc/nova/nova.conf DEFAULT my_ip 192.168.0.188
crudini --set /etc/nova/nova.conf vnc enabled true
crudini --set /etc/nova/nova.conf vnc vncserver_listen 0.0.0.0
crudini --set /etc/nova/nova.conf vnc vncserver_proxyclient_address 192.168.0.188
crudini --set /etc/nova/nova.conf vnc novncproxy_base_url http://192.168.0.188:6080/vnc_auto.html
crudini --set /etc/nova/nova-compute.conf libvirt virt_type qemu

Finalize the installation

service nova-compute restart

Verify the operation of the compute service

source ~/admin-rc
openstack compute service list
openstack catalog list
openstack image list
nova-status upgrade check

Networking service neutron

source ~/admin-rc

openstack user create --domain default --password-prompt neutron
openstack role add --project service --user neutron admin

openstack service create --name neutron \
--description "OpenStack Networking" network
openstack endpoint create --region RegionOne \
network public http://controller.local:9696
openstack endpoint create --region RegionOne \
network internal http://controller.local:9696
openstack endpoint create --region RegionOne \
network admin http://controller.local:9696
apt install neutron-server neutron-plugin-ml2 \
neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
neutron-metadata-agent -y
crudini --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:password1@controller/neutron
crudini --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2
crudini --set /etc/neutron/neutron.conf DEFAULT service_plugins router
crudini --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips true
crudini --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:password1@controller
crudini --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
crudini --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller:5000
crudini --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:35357
crudini --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211
crudini --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
crudini --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
crudini --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
crudini --set /etc/neutron/neutron.conf keystone_authtoken project_name service
crudini --set /etc/neutron/neutron.conf keystone_authtoken username neutron
crudini --set /etc/neutron/neutron.conf keystone_authtoken password password1
crudini --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes true
crudini --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes true
crudini --set /etc/neutron/neutron.conf nova auth_url http://controller:35357
crudini --set /etc/neutron/neutron.conf nova auth_type password
crudini --set /etc/neutron/neutron.conf nova project_domain_name default
crudini --set /etc/neutron/neutron.conf nova user_domain_name default
crudini --set /etc/neutron/neutron.conf nova region_name RegionOne
crudini --set /etc/neutron/neutron.conf nova project_name service
crudini --set /etc/neutron/neutron.conf nova username nova
crudini --set /etc/neutron/neutron.conf nova password password1

configuring the Modular Layer 2 (ML2)

crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan,vxlan
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers linuxbridge,l2population
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks provider
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset true

Configuring the Linux bridge agent

crudini --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:enp0s8
crudini --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 192.168.0.188
crudini --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan true
crudini --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true
crudini --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
crudini --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini \
securitygroup firewall_driver \
neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

Configuring the layer-3, DHCP agent

crudini --set /etc/neutron/l3_agent.ini DEFAULT interface_driver linuxbridge
crudini --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver linuxbridge
crudini --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
crudini --set /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata true
crudini --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_ip controller
crudini --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret METADATA_SECRET

Configuring the Nova service to use the neutron service

crudini --set /etc/nova/nova.conf neutron url http://controller:9696
crudini --set /etc/nova/nova.conf neutron auth_url http://controller:35357
crudini --set /etc/nova/nova.conf neutron auth_type password
crudini --set /etc/nova/nova.conf neutron project_domain_name default
crudini --set /etc/nova/nova.conf neutron user_domain_name default
crudini --set /etc/nova/nova.conf neutron region_name RegionOne
crudini --set /etc/nova/nova.conf neutron project_name service
crudini --set /etc/nova/nova.conf neutron username neutron
crudini --set /etc/nova/nova.conf neutron password password1
crudini --set /etc/nova/nova.conf neutron service_metadata_proxy true
crudini --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret METADATA_SECRET
su -s /bin/sh -c "neutron-db-manage \
--config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini \
upgrade head" neutron

finalize the installation by restarting the neutron

service nova-api restart
service neutron-server restart
service neutron-linuxbridge-agent restart
service neutron-dhcp-agent restart
service neutron-metadata-agent restart
service neutron-l3-agent restart

Installing the OpenStack dashboard

apt install openstack-dashboard -y

sed -i 's/ubuntu/default/' /etc/openstack-dashboard/local_settings.py
sed -i 's/v2.0/v3/' /etc/openstack-dashboard/local_settings.py
sed -i 's/_member_/user/' /etc/openstack-dashboard/local_settings.py
sed -i 's/127.0.0.1/controller/' /etc/openstack-dashboard/local_settings.py
vi /etc/openstack-dashboard/local_settings.py 
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
}

service apache2 restart

If you have problems accessing horizon make sure the following are set

/etc/openstack-dashboard/local_settings.py 

SESSION_ENGINE='django.contrib.sessions.backends.cache'

CACHES = {
    'default': {
       #
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}
/etc/apache2/apache2.conf

Directory /

    Options FollowSymLinks
    AllowOverride all
    Require all granted

 Directory /usr/share

    AllowOverride all
    Require all granted

 Directory /var/www/

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted



Log location

Service name Log files location
Horizon Controller node:
/var/log/apache2/horizon_access.log
/var/log/apache2/horizon_error.log
KeyStone Controller node:
/var/log/apache2/error.log
/var/log/apache2/access.log
/var/log/apache2/keystone_wsgi_admin_access.log
/var/log/apache2/keystone_wsgi_admin_error.log
/var/log/apache2/keystone_wsgi_main_access.log
/var/log/apache2/keystone_wsgi_main_error.log
MySQL Controller node:
/var/log/syslog
/var/log/mysql/error.log
RabbitMQ Controller node:
/var/log/rabbitmq/
Nova Controller and compute node:
/var/log/nova/
Glance Controller node:
/var/log/glance/
Neutron Controller and compute node:
/var/log/neutron/
Cinder Storage node:
/var/log/cinder/
By

OpenStack and quick PoC deployment using PackStack on CentOS7 and DevStack on Ubuntu

At TEKYHOST we provide OpenStack consulting for Private and Public deployments

Introduction to OpenStack

OpenStack is a set of software tools for building and managing cloud computing platforms for public and private clouds. Backed by some of the biggest companies in software development and hosting, as well as thousands of individual community members, many think that OpenStack is the future of cloud computing. OpenStack is managed by the OpenStack Foundation, a non-profit that oversees both development and community-building around the project.
Read More