OpenStack kolla deployment

from RDO packages

OpenStack, Ansible, Docker, production ready, HA, etc. Nothing can be so interesting as Kolla. | Kolla includes all you need to create, maintain and operate an OpenStack environment. | All the services will be installed along the nodes you specify inside docker containers with high availability and load balancing between services by default, you don\'t need to care about an external tool for these purposes. | In future posts, i will talk in more detail about Kolla and how works, also more tips or deployment types. For now, go to the official documentation. | At this demo, i will use:

  • x1 Deployment node: Laptop with 12GB of RAM and a single CPU

  • x3 Target nodes: VMs with 24GB of RAM and 2 vCPU each one.

  • All nodes connected to a shared connection with 300Mbs

ALL NODES

Before deploy OpenStack with Kolla, we need to ensure all the nodes got time synchronized.

yum -y install ntp
systemctl enable ntpd.service
systemctl start ntpd.service

Next, stop and disable libvirt service to avoid conflicts with libvirt containers.

systemctl stop libvirtd
systemctl disable libvirtd

Install docker

curl -sSL https://get.docker.io | bash

Add the user you are using to docker group so this user can issue docker commands without sudo. Logoff and login to apply changes.

sudo usermod -aG docker root

Create a file called kolla.conf with the following content.

vi /etc/systemd/system/docker.service.d/kolla.conf
[Service]
MountFlags=shared

Restart and enable docker service

Install some packages who are needed by next steps.

DEPLOY NODE

Install EPEL repository

Install ansible

Clone Kolla mitaka/stable code.

Install kolla and dependencies.

Copy kolla configuration files to /etc/

Create kolla build config file

Edit kolla-build file with the following content

Login with your DockerHub account, sometimes, login doesn\'t works as expected. Review auth url at authentication file in ~/.docker/ directory. After Austin Summit i will post exact changes i made in the URL.

| Create and push the images to your DockerHub account. | If images are not automatically pushed to the remote repository, push them manually once image creation finished. | Building images can last various hours, in my experience sometimes were built in 3 hours and another times in 9 hours. And much more if you are going to push them to your DockerHub instead of a private registry.

Review all docker images kolla has created.

TARGET HOSTS

In target nodes, a newer version of pip and docker-py is needed, install it.

DEPLOY KOLLA

Kolla ships a tool to create random passwords, issue this command to run this tool. Also, you can modify passwords file at /etc/kolla/ directory.

| Edit globals.yml file with the following content, use your own info if necessary. | Change docker_namespace with your docker account name.

Edit the inventory file with your server\'s IPs or hostnames.

Create an SSH key to login into target servers.

Copy the SSH key you have previously created to all your target nodes.

| Ensure all hostnames can be resolved between all the nodes, this is a necessary step, if not, rabbitmq will fail. | If using a DNS server you can skip this task. | Configure hosts file.

Copy hosts file to the other nodes.

Execute the prechecks tool to ensure all requisites are ok.

| Once all requistes are passed, start the installation of OpenStack by Kolla. | The first time usually take a long time, because docker images need to be pulled into target hosts, and more if pull comes from DockerHub registry instead of a local one.

Execute this tool to create a credential file.

Source credential file.

| Kolla ships a tool to create a base Openstack configuration layout, this will create networks, routers, images, etc. | Execute it in the newly OpenStack environment.

Check nova services status

Check Neutron agents status.

Create a new instance and see what happens.

Check how the instance is going.

Thats all for now, in future posts we will see in more detail how Kolla works.

Cheers, Eduardo Gonzalez

Last updated

Was this helpful?