The Red Hat OpenStack Platform director is a toolset for installing and managing a complete OpenStack environment. It is based primarily on the OpenStack project TripleO, which is an abbreviation for "OpenStack-On-OpenStack". This project takes advantage of OpenStack components to install a fully operational OpenStack environment.
The Red Hat OpenStack Platform director uses two main concepts:
- undercloud
- overcloud
The undercloud installs and configures the overcloud.
Undercloud
The undercloud is the main director node. It is a single-system OpenStack installation that includes components for provisioning and managing the OpenStack nodes that form your OpenStack environment (the overcloud).
- Discover the bare-metal servers on which the deployment of Openstack Platform has been deployed
- Serve as the deployment manager for the software to be deployed on these nodes
- Define complex network topology and configuration for the deployment
- Rollout of software updates and configurations to the deployed nodes
- Reconfigure an existing undercloud deployed environment
- Enable high availability support for the openstack nodes
Overcloud
- The overcloud is the resulting Red Hat OpenStack Platform environment created using the undercloud.
- This includes different nodes roles which you define based on the OpenStack Platform environment you aim to create.
TripleO architecture
TripleO is a friendly name for "OpenStack-On-OpenStack" and is a deployment and management tool for deployment, configuration and automation used by the undercloud. TripleO creates a production cloud known as the "overcloud" and the underlying deployment cloud known as the "undercloud".
Before being able to deploy the "overcloud", the "undercloud" needs to be deployed.
TripleO leverages several OpenStack services like Nova, Ironic, Neutron, Heat, Glance and Ceilometer to deploy the overcloud on bare-metal hardware.
- Ironic: Provisions physical hardware and leverages technologies like PXE and IPMI to present it for the deployment of the overcloud.
- Nova: Provisions the overcloud nodes like compute, controller, and Ceph storage nodes.
- Neutron: Provides the networking environment in which to deploy the overcloud.
- Glance: Provides the repository for images that are used by "ironic" for bare metal provisioning and while deploying overcloud nodes.
- Heat: Provides the wat to orchestrate the "overcloud" deployment with complex architecture
- Ceilometer: Helps collect metrics about the overcloud nodes
- Cinder: Provides the volumes needed to deploy the "overcloud" nodes
- Horizon: Provides the web user interface
- Keystone: Provides authentication for all the overcloud nodes.
- RHEL 7 x86_64
- CentOS 7 x86_64
My setup details
I will be hosting my overcloud and undercloud on virtual environment which will be running on a physical blade
My physical blade KVM host
Netmask : 255.255.255.224
Gateway : 10.43.138.30
CPU : 32
RAM : 128GB
Disk : 900GB
8 core CPU
12 GB memory
60 GB free disk space
DNS Server (my DNS server is running on the KVM host)
Netmask : 255.255.255.224
Gateway : 10.43.138.30
Undercloud Director Virtual Machine
eth1 : Provisioning Network
[eth0]
IP : 10.43.138.37
Netmask : 255.255.255.224
Gateway : 10.43.138.30
[eth1]
This interface will be configured automatically as a bridge when we do the undercloud configuration but I plan to use below config for eth1
IP : 192.168.122.30
Netmask : 255.255.255.0
Gateway : 192.168.122.1
Validate FQDN of the undercloud director
The director requires a fully qualified domain name for its installation and configuration process. This means you may need to set the hostname of your director’s host.
Ensure that there is a FQDN hostname set and that the $HOSTNAME environment variable matches that value. The easiest way to do this is to set the "undercloud_hostname" option in undercloud.conf before running the install. This will allow the installer to configure all of the hostname- related settings appropriately.
Alternatively the hostname settings can be configured manually, but this is strongly discouraged. The manual steps are as follows:
Since I am using DNS, I need not worry about this
Step by Step tutorial guide to configure BIND DNS server in chroot environment for Red Hat (RHEL/CentOS) 7
Server: 10.43.138.12
Address: 10.43.138.12#53
Name: undercloud-director.example
Address: 192.168.122.30
[root@undercloud-director nova]# nslookup undercloud-director.example
Server: 10.43.138.12
Address: 10.43.138.12#53
Name: undercloud-director.example
Address: 192.168.122.30
[root@undercloud-director nova]# nslookup 192.168.122.30
Server: 10.43.138.12
Address: 10.43.138.12#53
30.122.168.192.in-addr.arpa name = undercloud-director.example.
An entry for the system’s FQDN hostname is also needed in /etc/hosts. For example, if the system is named myhost.mydomain, /etc/hosts should have an entry like:
Overcloud Controller
This will have single interface (eth0)
RAM : 10240
Disk1 : 50GB
NIC MAC : 52:54:00:87:37:1f
Overcloud Compute
This will have single interface (eth0)
RAM : 10240
Disk1 : 50GB
NIC MAC : 52:54:00:64:36:c6
Overcloud Ceph-Storage
This will have single interface (eth0)
RAM : 10240
Disk1 : 50GB
Disk2 : 50GB
Disk3 : 50GB
NIC MAC : 52:54:00:6f:3f:47
Register your undercloud node
Step by Step Red Hat Linux 7.0 installation (64 bit) with screenshots
Step by Step CentOS 7 (64 bit) Installation Guide with Screenshots
You must register your node to proper Red Hat subscription to get all the required rpms for the deployment
Look out for the repository which has openstack contents
Get the pool id of the openstack repo and attach it to your system
Successfully attached a subscription for: Self-Supported Red Hat OpenStack Platform
Next enable below list of repositories which will be needed for the overall tripleo deployment.
Repository 'rhel-7-server-openstack-10-devtools-rpms' is enabled for this system.
Repository 'rhel-7-server-satellite-tools-6.2-rpms' is enabled for this system.
Repository 'rhel-7-server-rh-common-rpms' is enabled for this system.
Repository 'rhel-7-server-openstack-10-rpms' is enabled for this system.
Repository 'rhel-ha-for-rhel-7-server-rpms' is enabled for this system.
Repository 'rhel-7-server-rpms' is enabled for this system.
Repository 'rhel-7-server-extras-rpms' is enabled for this system.
My network config
inet 10.43.138.27 netmask 255.255.255.224 broadcast 10.43.138.31
inet6 fe80::5054:ff:fe43:55dd prefixlen 64 scopeid 0x20<link>
ether 52:54:00:43:55:dd txqueuelen 1000 (Ethernet)
RX packets 78110 bytes 114498833 (109.1 MiB)
RX errors 0 dropped 5 overruns 0 frame 0
TX packets 33869 bytes 2765910 (2.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 52:54:00:46:8f:ee txqueuelen 1000 (Ethernet)
RX packets 374 bytes 19460 (19.0 KiB)
RX errors 0 dropped 5 overruns 0 frame 0
TX packets 9 bytes 662 (662.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Installing the Director Packages
Use the following command to install the required command line tools for director installation and configuration:
and follow the steps shared below to configure openstack repo and enable required repositories.
https://docs.openstack.org/tripleo-docs/latest/install/installation/installing.html
Creating user for undercloud deployment
The undercloud and overcloud deployment must be done as a normal user and not the root user so we will create a "stack" user for this purpose.
[root@undercloud-director network-scripts]# echo redhat | passwd --stdin stack
Changing password for user stack.
passwd: all authentication tokens updated successfully.
[root@undercloud-director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
stack ALL=(root) NOPASSWD:ALL
[root@undercloud-director ~]# chmod 0440 /etc/sudoers.d/stack
[root@undercloud-director ~]# su - stack
Configure undercloud deployment parameters
Copy the sample undercloud.conf file to the home directory of "stack" user
Update the below variables in your undercloud.conf based on your setup. These variables will be used to setup your undercloud node.
[DEFAULT]
local_ip = 192.168.122.30/24
network_gateway = 192.168.122.30
undercloud_public_vip = 192.168.122.100
undercloud_admin_vip = 192.168.122.101
local_interface = eth1
network_cidr = 192.168.122.0/24
masquerade_network = 192.168.122.0/24
dhcp_start = 192.168.122.150
dhcp_end = 192.168.122.160
inspection_iprange = 192.168.122.170,192.168.122.180
[auth]
The terminology are explained below
- local_ip : The IP address defined for the director’s Provisioning NIC. This is also the IP address the director uses for its DHCP and PXE boot services
- network_gateway : The gateway for the overcloud instances. This is the undercloud host, which forwards traffic to the External network.
- undercloud_public_vip : The IP address defined for the director’s Public API. Use an IP address on the Provisioning network that does not conflict with any other IP addresses or address ranges.
- undercloud_admin_vip : The IP address defined for the director’s Admin API. Use an IP address on the Provisioning network that does not conflict with any other IP addresses or address ranges.
- local_interface : The chosen interface for the director’s Provisioning NIC. This is also the device the director uses for its DHCP and PXE boot services. Change this value to your chosen device.
- network_cidr : The network that the director uses to manage overcloud instances. This is the Provisioning network, which the undercloud’s neutron service manages.
- masquerade_network : Defines the network that will masquerade for external access. This provides the Provisioning network with a degree of network address translation (NAT) so that it has external access through the director.
- dhcp_start; dhcp_end : The start and end of the DHCP allocation range for overcloud nodes. Ensure this range contains enough IP addresses to allocate your nodes.
- inspection_iprange : A range of IP address that the director’s introspection service uses during the PXE boot and provisioning process. Use comma-separated values to define the start and end of this range. Make sure this range contains enough IP addresses for your nodes and does not conflict with the range for dhcp_start and dhcp_end.
undercloud_db_password; undercloud_admin_token; undercloud_admin_password; undercloud_glance_password; etc
The remaining parameters are the access details for all of the director’s services. No change is required for the values. The director’s configuration script automatically generates these values if blank in undercloud.conf. You can retrieve all values after the configuration script completes.
Deploy the undercloud
Undercloud deployment is completely automated and uses "puppet" manifest provided by TripleO. Below command will start the undercloud installation and configuration.
********Once the step is complete you should see message like below**********
os-refresh-config completed successfully
Generated new ssh key in ~/.ssh/id_rsa
Created flavor "baremetal" with profile "None"
Created flavor "control" with profile "control"
Created flavor "compute" with profile "compute"
Created flavor "ceph-storage" with profile "ceph-storage"
Created flavor "block-storage" with profile "block-storage"
Created flavor "swift-storage" with profile "swift-storage"
#############################################################################
Undercloud install complete.
The file containing this installation's passwords is at
/home/stack/undercloud-passwords.conf.
There is also a stackrc file at /home/stack/stackrc.
These files are needed to interact with the OpenStack services, and should be
secured.
#############################################################################
The configuration is performed using python script "/usr/lib/python2.7/site-packages/instack_undercloud/undercloud.py"
The undercloud installation is divided into two distinct phases:
- Instack: It deploys diskimage-builder elements locally. These elements describe the package installations or system configuration to be done on the undercloud node. All runnable scripts are located under the "install.d" directory under "/usr/share/instack-undercloud/puppet-stack-config/"
- os-refresh-config: It provides the mechanism for staging the deployment of system configuration and uses "os-apply-config" to apply the configuration. It manages the in-instance process of responding to changes in configuration parameters which helps to refresh configurations for any changes made during postdeloyment.