Post

Openstack Deployment with Kolla-Ansible

Openstack Intro

OpenStack is a open standard cloud computing platform. It is mostly deployed as infrastructure-as-a-service (IaaS) in both public and private clouds where virtual servers and other resources are made available to users. - Wikipedia

As a virtualize platform, it supports multiple hypervisors such as KVM, Xen, VMware, and Hyper-V. Among them, Openstack with KVM stands out as one of the most popular implementations.

  • Openstack Component in Nuts (Graph) Img

  • Architecture of Openstack and KVM Img

Deployment

Kolla-Ansible

One of the most painful thing of starting to use OpenStack is the inconvenience of the deployment process, which often leads to unknown failures during installation. Kolla-ansible replace the inflexible deployment process with container, which organized by Ansible playbook.

By defining the associated variables in /etc/kolla/global.yml, these templating configuration options will then convert into Kolla’s Ansible playbooks for later container deployment.

Container plays a crucial role because it’s lighted-weight, flexible and portable characteristic greatly enhance the efficiency of the deployment process.

Once the deployment is completed using Kolla-ansible, the OpenStack service container will execute tasks similar to the original charms deployment method: using libvirt API to interact with KVM hypervisor.

Img

Step by Step Guide

Official Guide(https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html) is reliable document if you’ve choose latest version. How funny was that I chose to deploy YOGA for most updated functionality, but went wrong over and over again.

Here is the brief summarize of the guide context.

Step 1: Install Dependencies

Step 2: Clone Kolla-Ansible Repository

Step 3: Copy the Configuration File to Destination

all-in-one, ansible inventory file, show 6 types of hosts to deploy and all serve on localhost.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[control]
localhost       ansible_connection=local

[network]
localhost       ansible_connection=local

[compute]
localhost       ansible_connection=local

[storage]
localhost       ansible_connection=local

[monitoring]
localhost       ansible_connection=local

[deployment]
localhost       ansible_connection=local

globals.yml main configuration Step 4: Edit the Configuration Files

1
2
3
4
kolla_base_distro: "ubuntu"
network_interface: "eth0"
neutron_external_interface: "eth1"
kolla_internal_vip_address: "10.1.0.250"

Step 5: Bootstrap Servers Step 7: Deploy OpenStack Step 8: Post-Deployment Setup

Result of Kolla-Ansible Deployment

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
~$ sudo docker ps -a
CONTAINER ID   IMAGE                                                                   COMMAND                  CREATED       STATUS                 PORTS     NAMES
1ae523539d56   quay.io/openstack.kolla/horizon:master-ubuntu-jammy                     "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             horizon
c30f90bd97f6   quay.io/openstack.kolla/heat-engine:master-ubuntu-jammy                 "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             heat_engine
83a5425f4f7c   quay.io/openstack.kolla/heat-api-cfn:master-ubuntu-jammy                "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             heat_api_cfn
922cfb0ade52   quay.io/openstack.kolla/heat-api:master-ubuntu-jammy                    "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             heat_api
8df3c8193bb5   quay.io/openstack.kolla/neutron-metadata-agent:master-ubuntu-jammy      "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             neutron_metadata_agent
a9bd1226c31d   quay.io/openstack.kolla/neutron-l3-agent:master-ubuntu-jammy            "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             neutron_l3_agent
b9cefdbd4580   quay.io/openstack.kolla/neutron-dhcp-agent:master-ubuntu-jammy          "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             neutron_dhcp_agent
e92abf1e638c   quay.io/openstack.kolla/neutron-openvswitch-agent:master-ubuntu-jammy   "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             neutron_openvswitch_agent
a2b51983fa51   quay.io/openstack.kolla/neutron-server:master-ubuntu-jammy              "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             neutron_server
f7db7a7410e1   quay.io/openstack.kolla/openvswitch-vswitchd:master-ubuntu-jammy        "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             openvswitch_vswitchd
fa7ad45e7269   quay.io/openstack.kolla/openvswitch-db-server:master-ubuntu-jammy       "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             openvswitch_db
84a1b84beac2   quay.io/openstack.kolla/nova-compute:master-ubuntu-jammy                "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             nova_compute
75699d4058da   quay.io/openstack.kolla/nova-libvirt:master-ubuntu-jammy                "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             nova_libvirt
f1070570eeae   quay.io/openstack.kolla/nova-ssh:master-ubuntu-jammy                    "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             nova_ssh
c5b4601a0f76   quay.io/openstack.kolla/nova-novncproxy:master-ubuntu-jammy             "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             nova_novncproxy
48cb9f48a1d7   quay.io/openstack.kolla/nova-conductor:master-ubuntu-jammy              "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             nova_conductor
b3d011f128d9   quay.io/openstack.kolla/nova-api:master-ubuntu-jammy                    "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             nova_api
7c617ad17d6e   quay.io/openstack.kolla/nova-scheduler:master-ubuntu-jammy              "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             nova_scheduler
73040875217b   quay.io/openstack.kolla/placement-api:master-ubuntu-jammy               "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             placement_api
59cac6707023   quay.io/openstack.kolla/glance-api:master-ubuntu-jammy                  "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             glance_api
ee3ac2e0c2fc   quay.io/openstack.kolla/keystone:master-ubuntu-jammy                    "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             keystone
f0d2fe5e75f9   quay.io/openstack.kolla/keystone-fernet:master-ubuntu-jammy             "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             keystone_fernet
b9153c1cd1b2   quay.io/openstack.kolla/keystone-ssh:master-ubuntu-jammy                "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             keystone_ssh
1f49340675a6   quay.io/openstack.kolla/rabbitmq:master-ubuntu-jammy                    "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             rabbitmq
2af1b258b048   quay.io/openstack.kolla/memcached:master-ubuntu-jammy                   "dumb-init --single-…"   7 days ago   Up 7 days (healthy)             memcached
54ef9ec23bfc   quay.io/openstack.kolla/mariadb-server:master-ubuntu-jammy              "dumb-init -- kolla_…"   7 days ago   Up 7 days (healthy)             mariadb
52e75ac7af0a   quay.io/openstack.kolla/cron:master-ubuntu-jammy                        "dumb-init --single-…"   7 days ago   Up 7 days                       cron
aeb85d93d58f   quay.io/openstack.kolla/kolla-toolbox:master-ubuntu-jammy               "dumb-init --single-…"   7 days ago   Up 7 days                       kolla_toolbox
0405af7aed05   quay.io/openstack.kolla/fluentd:master-ubuntu-jammy                     "dumb-init --single-…"   7 days ago   Up 7 days                       fluentd

Post Deployment

Kolla-Ansible also give a convinient shell script, init-runonce, to create an sample ready-to-go environment.

This post is licensed under CC BY 4.0 by the author.