How to Install OpenStack on CentOS 8 with
Packstack
Step 1) Set the hostname and update
/etc/hosts file
Open the terminal and set the hostname using the following hostnamectl
command,
[root@localhost ~]# hostnamectl set-hostname
"openstack.ofppt.ma"
[root@localhost ~]# exec bash
Run below echo command to append hostname entry in /etc/hosts file.
[root@openstack ~]# echo -e "192.168.1.8\openstack.ofppt.ma"
>> /etc/hosts
Step 2) Disable Network Manager and
Configure Network using network-scripts
Network-Manager is the default tool in CentOS 8 to manager networks but
for Openstack we must disable it because openstack networking will not
work properly with network-manager. In place of network manager, we must
install native network-scripts.
To disable network-manager run the following commands,
[root@openstack ~]# systemctl disable NetworkManager
[root@openstack ~]# systemctl stop NetworkManager
Run following dnf command to install native network-scripts
[root@openstack ~]# dnf install network-scripts -y
Once the network-scripts package is installed then we can manage
networking (ifcfg-* files) using native network.service
Now let’s configure IP address in ifcfg-enp0s3 file and start network service
root@openstack ~]# nano /etc/sysconfig/network-scripts/ifcfg-
enp0s3
Save and exit the file and then start network service using following
command,
[root@openstack ~]# systemctl start network
[root@openstack ~]# systemctl enable network
Now verify whether IP is assigned to NIC (enp0s3) using ip command,
[root@openstack ~]# ip a s enp0s3
Step 3) Enable OpenStack repositories and
install packstack utility
At time of writing this article, ussuri openstack was available, so run the
following command to configure its repositories
[root@openstack ~]# dnf config-manager --set-enabled
powertools
or
[root@openstack ~]# dnf config-manager --enable powertools
[root@openstack ~]# dnf install -y centos-release-openstack-
ussuri
Now installed all the available updates and reboot your system,
[root@openstack ~]# dnf update -y
[root@openstack ~]# reboot
Once the system is available after the reboot, execute following dnf
command to install packstack utility
[root@openstack ~]# dnf install -y openstack-packstack
Step 4) Generate answer file and install
openstack using packstack
Use packstack command to generate the answer file,
[root@openstack ~]# packstack --gen-answer-file
/root/openstack-answer.txt
Once the answer file is generated, edit the following parameters using vi
editor,
[root@openstack ~]# nano /root/openstack-answer.txt
..............
CONFIG_HEAT_INSTALL=y
CONFIG_PROVISION_DEMO=n
CONFIG_KEYSTONE_ADMIN_PW=P@ssw0rd
CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:enp0s3
..............
Save and exit the file.
Replace the interface name (enp0s3) as per your setup.
Note: Default Tenant network type drive is set as “geneve” and default
neutron type driver is set as “geneve and flat”. If wish to change these
default parameters, then update following lines in answer file. In this
demonstration i am not going to update these parameters.
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=geneve,flat
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=geneve
Run the following command to initiate the openstack deployment using
answer file.
[root@openstack ~]# packstack --answer-file /root/openstack-
answer.txt
Deployment will take around 20 to 30 minutes depending on your system’s
hardware and internet speed. Once it is installed successfully, we will get the
following:
Now verify whether IP from enp03 interface is assigned to bridge br-ex and
also confirm whether interface enp0s3 is added as a port in ovs-bridge.
Run the following commands:
[root@openstack ~]# ip a s enp0s3
[root@openstack ~]# ip a s br-ex
[root@openstack ~]# ovs-vsctl show
Perfect, above output confirms that installation was successful, and
networking is also configured as per the answer file.
Step 5) Access Horizon Dashboard
Now try to login to Horizon dashboard. URL is already specified in the above
output, in my case url is http://192.168.1.8/dashboard , Use the user name as
admin and password that we specify in answer file.
We also refer the file “keystonerc_admin” for credentials
Now, let’s test this openstack deployment by launching an instance.
Step 6) Test and verify OpenStack
installation by launching an instance
Before launching an instance in openstack, first we must create networks and
router and glance image. So, let’s first create external network in admin
tenant using following neutron commands,
[root@openstack ~]# source keystonerc_admin
[root@openstack ~(keystone_admin)]# neutron net-create
external_network --provider:network_type flat --
provider:physical_network extnet --router:external
Now add a subnet of your flat network to external network by running
following neutron command.
[root@openstack ~(keystone_admin)]# neutron subnet-create --
name public_subnet --enable_dhcp=True --allocation-
pool=start=192.168.1.210,end=192.168.1.230 --
gateway=192.168.1.1 external_network 192.168.1.0/24
Create a router by executing the following neutron command and set its
gateway using external network
[root@openstack ~(keystone_admin)]# neutron router-create dev-
router
[root@openstack ~(keystone_admin)]# neutron router-gateway-set
dev-router external_network
Create private network and attach a subnet to it. Run the following neutron
command,
[root@openstack ~(keystone_admin)]# neutron net-create pvt_net
[root@openstack ~(keystone_admin)]# neutron subnet-create --
name pvt_subnet pvt_net 10.20.1.0/24
Add pvt_net interface to router “dev_router” using beneath neutron
command,
[root@openstack ~(keystone_admin)]# neutron router-interface-
add dev-router pvt_subnet
Now Download Cirros image and then upload it to glance
[root@openstack ~(keystone_admin)]# wget
http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-
disk.img
[root@openstack ~(keystone_admin)]# openstack image create --
disk-format qcow2 --container-format bare --public --file
cirros-0.5.1-x86_64-disk.img cirros
Now head back to horizon dashboard and verify the network topology
Perfect, above confirms that private and external network have been setup
correctly along with the router.
One final step before creating a vm, update the default security group,
add icmp and ssh ingress rules, click on “Security Groups” under the network
Tab, Click on Manage Rules and then click on “Add rule”
Similarly add rule for ssh
Click on Add
Now all the requirements for launching an openstack instance are fullfilled.
Click on Compute Tab and then Choose Instances option and click on
“Launch Instance”
Once VM is launched successfully then we will get something like below,
Now Associate floating IP to instance (demo_vm), Under the “Actions” Tab,
Choose “Associate Floating IP”
Now Choose IP or Click on + sign to get floating IP from external network
and then associate it
Once IP is associated to the VM then floating IP will be displayed for under ‘IP
Address‘ option, example is shown below
Now try to access this demo_vm using the floating ip, use cirros as a user and
‘gocubsgo’ as password
Great, above output confirms that we can access our instance via floating ip.
This concludes the article; I hope this tutorial helps to deploy openstack on
CentOS 8 system. Please don’t hesitate to share your feedback and
comments.