Phase 7 – OpenStack – Step 6 to 10: Bootstrap OpenStack

Phase 7.6 — Configure /etc/kolla/globals.yml

7.6.1 Back up the original file

On ctrl:

sudo cp /etc/kolla/globals.yml /etc/kolla/globals.yml.original.$(date +%F-%H%M%S)

7.6.2 Choose your Kolla VIP

Pick an unused IP on your management LAN.

Recommended:

192.168.1.60

Test that it is unused:

ping -c 2 192.168.1.60

You want no replies.

If arping is available:

sudo arping -D -I <management_interface> 192.168.1.60

Example:

sudo arping -D -I ens18 192.168.1.60

If there is no duplicate response, it is safe to use.


7.6.3 Identify interface names

Run on ctrl:

ip -br addr

Example:

ens18  UP  192.168.1.51/24
ens19 UP

For this example:

Management/API interface: ens18
External/Neutron interface: ens19

Also confirm cmp and gpu use the same management interface name:

ansible -i /opt/kolla-ansible/inventory/multinode-lab compute \
-m shell \
-a "hostname; ip -br addr" \
-b

If all three VMs were created from the same Ubuntu template, the management interface is probably the same name everywhere.


7.6.4 Write a minimal first-deploy globals.yml

This is a deliberately conservative first deployment. It enables the core OpenStack services and leaves Ceph/Cinder/GPU integration for the next stage.

Replace ens18 and ens19 with your real interface names.

sudo tee /etc/kolla/globals.yml > /dev/null <<'EOF'
---
###############################################################################
# Kolla-Ansible Homelab globals.yml
# Topology:
# ctrl = control + network + monitoring + deployment
# cmp = compute
# gpu = compute, future GPU passthrough
###############################################################################

# Base image settings
kolla_base_distro: "ubuntu"
kolla_install_type: "binary"

# Container runtime
kolla_container_engine: "docker"

# OpenStack release is normally derived from the installed kolla-ansible version.
# Leave unset unless you know you need to pin it.
# openstack_release: "2024.2"

###############################################################################
# Networking
###############################################################################

# Main management/API interface.
# This must be the interface with 192.168.1.51/52/53 on ctrl/cmp/gpu.
network_interface: "ens18"
api_interface: "ens18"

# For the first homelab deployment, keep tunnels on the management interface.
# Later you can move this to a dedicated tenant/tunnel interface.
tunnel_interface: "ens18"

# Neutron external/provider interface.
# This should exist on ctrl and should NOT have an IP address.
neutron_external_interface: "ens19"

# Kolla internal API VIP.
# Must be unused on your management subnet.
kolla_internal_vip_address: "192.168.1.60"

# For this homelab, use the same VIP internally and externally.
kolla_external_vip_address: "192.168.1.60"

###############################################################################
# Neutron
###############################################################################

neutron_plugin_agent: "openvswitch"
neutron_tenant_network_types: "vxlan"

###############################################################################
# Core OpenStack services for first deployment
###############################################################################

enable_haproxy: "yes"
enable_keystone: "yes"
enable_glance: "yes"
enable_nova: "yes"
enable_neutron: "yes"
enable_placement: "yes"
enable_horizon: "yes"

###############################################################################
# Keep these OFF for the first deploy.
# Enable later after the core cloud works.
###############################################################################

enable_cinder: "no"
enable_cinder_backup: "no"

enable_heat: "no"
enable_magnum: "no"
enable_octavia: "no"
enable_designate: "no"
enable_ironic: "no"
enable_barbican: "no"

###############################################################################
# Logging / monitoring
###############################################################################

enable_prometheus: "no"
enable_grafana: "no"

###############################################################################
# Region
###############################################################################

openstack_region_name: "RegionOne"
EOF

Now validate YAML syntax:

python3 - <<'PY'
import yaml
with open('/etc/kolla/globals.yml') as f:
yaml.safe_load(f)
print("globals.yml parses OK")
PY

If Python says No module named yaml:

sudo apt install -y python3-yaml

Then retry the Python validation.


7.6.5 Generate passwords

Back up the current password file:

sudo cp /etc/kolla/passwords.yml /etc/kolla/passwords.yml.original.$(date +%F-%H%M%S)

Generate passwords:

kolla-genpwd

Check a few values exist:

grep -n "keystone_admin_password" /etc/kolla/passwords.yml
grep -n "database_password" /etc/kolla/passwords.yml
grep -n "rabbitmq_password" /etc/kolla/passwords.yml

Do not paste passwords.yml into chat or commit it to a public Git repository.


7.6.6 Final Phase 7.6 verification

Run:

grep -nE "^(kolla_base_distro|kolla_install_type|kolla_container_engine|network_interface|api_interface|tunnel_interface|neutron_external_interface|kolla_internal_vip_address|kolla_external_vip_address|neutron_plugin_agent|enable_cinder|enable_horizon)" /etc/kolla/globals.yml

Expected example:

kolla_base_distro: "ubuntu"
kolla_install_type: "binary"
kolla_container_engine: "docker"
network_interface: "ens18"
api_interface: "ens18"
tunnel_interface: "ens18"
neutron_external_interface: "ens19"
kolla_internal_vip_address: "192.168.1.60"
kolla_external_vip_address: "192.168.1.60"
neutron_plugin_agent: "openvswitch"
enable_horizon: "yes"
enable_cinder: "no"

Phase 7.7 — Run bootstrap-servers

bootstrap-servers prepares target hosts for Kolla deployment. In the official quickstart flow, this comes before prechecks and deploy.

From ctrl:

source /opt/kolla-ansible/kolla-env.sh

export KOLLA_INVENTORY=/opt/kolla-ansible/inventory/multinode-lab

Run bootstrap:

kolla-ansible bootstrap-servers -i "$KOLLA_INVENTORY"

This step prepares the nodes for containerised OpenStack services.


7.7.1 Verify after bootstrap

Check Ansible still works:

ansible -i "$KOLLA_INVENTORY" control,compute -m ping

Check Docker:

ansible -i "$KOLLA_INVENTORY" control,compute \
-m shell \
-a "hostname; docker --version; systemctl is-active docker" \
-b

Check Python:

ansible -i "$KOLLA_INVENTORY" control,compute \
-m shell \
-a "hostname; python3 --version" \
-b

Check networking:

ansible -i "$KOLLA_INVENTORY" control,compute \
-m shell \
-a "hostname; ip -br addr; ip route" \
-b

Checkpoint:

Do not proceed until bootstrap-servers completes successfully.

Phase 7.8 — Run prechecks

prechecks validates that the hosts and configuration are ready before deployment. The troubleshooting docs note that deployment failures often happen during evaluation, and the precheck feature exists to catch misconfigured environments before deployment.

Run:

kolla-ansible prechecks -i "$KOLLA_INVENTORY"

This is the most important gate before deploy.


7.8.1 Common precheck failures and what they mean

Interface not found

Example:

Interface ens19 not found

Fix:

ip -br addr

Then correct:

neutron_external_interface: "<actual-interface-name>"

in:

/etc/kolla/globals.yml

VIP already in use

Example:

VIP 192.168.1.60 is already used

Pick another unused IP:

kolla_internal_vip_address: "192.168.1.61"
kolla_external_vip_address: "192.168.1.61"

Then rerun:

kolla-ansible -i "$KOLLA_INVENTORY" prechecks

Docker not running

Check:

ansible -i "$KOLLA_INVENTORY" all -m shell -a "systemctl status docker --no-pager" -b

Restart:

ansible -i "$KOLLA_INVENTORY" all -m systemd -a "name=docker state=started enabled=true" -b

Passwords not generated

Run:

kolla-genpwd

Then rerun prechecks.


SSH or sudo failure

Run:

ansible -i "$KOLLA_INVENTORY" all -m ping
ansible -i "$KOLLA_INVENTORY" all -m command -a "whoami" -b

Both must work.


7.8.2 Precheck success criterion

You want:

PLAY RECAP
ctrl failed=0
cmp failed=0
gpu failed=0

Do not run deploy until prechecks passes cleanly.


Phase 7.9 — Deploy OpenStack

Once prechecks pass, deploy.

Optional but recommended: pull images first. This separates image download problems from deployment problems.

kolla-ansible pull -i "$KOLLA_INVENTORY"

Then deploy:

kolla-ansible deploy -i "$KOLLA_INVENTORY"

This will start deploying the OpenStack control plane containers. Expect it to take some time.


7.9.1 Watch containers during deployment

In another SSH session to ctrl:

watch -n 2 'docker ps --format "table {{.Names}}\t{{.Status}}" | head -40'

On cmp:

ssh sont@192.168.1.52
watch -n 2 'docker ps --format "table {{.Names}}\t{{.Status}}"'

On gpu:

ssh sont@192.168.1.53
watch -n 2 'docker ps --format "table {{.Names}}\t{{.Status}}"'

You should start seeing containers for services such as:

mariadb
rabbitmq
memcached
haproxy
keystone
glance
nova
neutron
placement
horizon

7.9.2 After deployment: run post-deploy

After deploy finishes successfully:

kolla-ansible post-deploy -i "$KOLLA_INVENTORY"

The official quickstart places post-deploy after the deployment stage to create OpenStack client access configuration.

Then source the admin credentials:

source /etc/kolla/admin-openrc.sh

If that file does not exist, locate it:

find /etc/kolla -name '*openrc*' -o -name 'clouds.yaml'

7.9.3 Verify OpenStack services

Run:

openstack service list

Expected services include:

keystone
glance
nova
neutron
placement

Check endpoints:

openstack endpoint list

Check compute services:

openstack compute service list

Check hypervisors:

openstack hypervisor list

Expected hypervisors:

cmp
gpu

Check network agents:

openstack network agent list

Check images:

openstack image list

It may be empty. That is fine at this stage.


7.9.4 Verify Docker containers on all nodes

From ctrl:

ansible -i "$KOLLA_INVENTORY" control,compute \
-m shell \
-a "hostname; docker ps --format '{{.Names}} {{.Status}}' | sort" \
-b

You should see many containers on ctrl, and Nova/Neutron-related containers on cmp and gpu.


Critical Nested Virtualisation Check

Because your OpenStack compute nodes are themselves VMs running on Proxmox, cmp and gpu need nested virtualisation working.

Run:

ansible -i "$KOLLA_INVENTORY" compute \
-m shell \
-a "hostname; egrep -c '(vmx|svm)' /proc/cpuinfo; ls -l /dev/kvm || true" \
-b

Expected:

/proc/cpuinfo count > 0
/dev/kvm exists

If /dev/kvm is missing, set CPU type to host on the Proxmox VM definitions for cmp and gpu, then reboot them:

# On pve2 for cmp VM 1211
qm set 1211 --cpu host
qm reboot 1211

# On pve0 for gpu VM 1212
qm set 1212 --cpu host
qm reboot 1212

Then rerun the nested virtualisation check.


End-of-Phase Success Criteria

Phase 7.5 to 7.9 is complete when all of this works:

Inventory:
ansible-inventory --graph shows ctrl, cmp, gpu in correct groups

Connectivity:
Ansible ping from ctrl to all nodes works
Ansible become/root test works

globals.yml:
management interface is correct
neutron external interface is correct
Kolla VIP is unused and configured
passwords.yml has generated values

bootstrap:
kolla-ansible bootstrap-servers succeeds

prechecks:
kolla-ansible prechecks succeeds with failed=0

deploy:
kolla-ansible deploy succeeds

post-deploy:
admin-openrc.sh exists
openstack service list works
openstack endpoint list works
openstack compute service list works
openstack hypervisor list shows cmp and gpu

At that point your homelab has a working OpenStack control plane, and the next logical phase is to create the first image, flavor, provider network, tenant network, router, floating IP, and test VM.

OpenStack Homelab Deploy Summary

Final Deployment State

The final kolla-ansible deploy completed successfully.

PLAY RECAP
cmp ok=66 changed=36 unreachable=0 failed=0
ctrl ok=265 changed=16 unreachable=0 failed=0
gpu ok=60 changed=36 unreachable=0 failed=0
localhost ok=4 changed=0 unreachable=0 failed=0

This confirms that Kolla-Ansible successfully deployed OpenStack services across:

ctrl  192.168.1.51  control / network / API / dashboard
cmp 192.168.1.52 compute
gpu 192.168.1.53 compute / future GPU node

What Worked Without Major Attention

1. Base VM Connectivity

The three OpenStack VMs were reachable from the deployment node.

ctrl  reachable
cmp reachable
gpu reachable

Ansible SSH worked after the host keys were accepted.

ansible -i "$KOLLA_INVENTORY" openstack -m ping

Result:

ctrl SUCCESS
cmp SUCCESS
gpu SUCCESS

2. Passwordless Become / Root Escalation

Kolla-Ansible required root privileges on all target nodes.

ansible -i "$KOLLA_INVENTORY" openstack -m command -a "whoami" -b

Result:

ctrl root
cmp root
gpu root

This worked correctly and did not require additional sudo fixes.

3. Docker Runtime

Docker was installed, enabled, and active on all nodes.

Docker version 29.1.3
systemctl is-active docker = active

This was required because your Kolla deployment uses:

kolla_container_engine: "docker"

Docker itself was not the cause of the deployment failures.

4. Nested Virtualisation

The compute nodes had KVM available.

cmp:
vmx/svm count: 32
/dev/kvm exists

gpu:
vmx/svm count: 16
/dev/kvm exists

This confirmed that nested virtualisation was working, so this setting was valid:

nova_compute_virt_type: "kvm"

You did not need to fall back to:

nova_compute_virt_type: "qemu"

5. Management and External Interfaces

The final interface layout was correct.

ctrl:
eth0 192.168.1.51/24
enp6s19 UP, no IP address

cmp:
eth0 192.168.1.52/24

gpu:
eth0 192.168.1.53/24

The correct Kolla network settings were:

network_interface: "eth0"
api_interface: "eth0"
tunnel_interface: "eth0"
neutron_external_interface: "enp6s19"

kolla_internal_vip_address: "192.168.1.50"
kolla_external_vip_address: "192.168.1.50"

The second interface initially appeared as enp6s19, not eth1, which was important.


Failures, Reasons, and Fixes

Failure 1 — Wrong Kolla-Ansible Command Order

Symptom

Commands like this failed:

kolla-ansible -i "$KOLLA_INVENTORY" pull

Error:

kolla-ansible: '-i /opt/kolla-ansible/inventory/multinode-homelab pull' is not a kolla-ansible command

Reason

Your installed kolla-ansible CLI expects the command first, then the inventory option.

Fix

Use:

kolla-ansible <command> -i "$KOLLA_INVENTORY"

Correct examples:

kolla-ansible bootstrap-servers -i "$KOLLA_INVENTORY"
kolla-ansible prechecks -i "$KOLLA_INVENTORY"
kolla-ansible pull -i "$KOLLA_INVENTORY"
kolla-ansible deploy -i "$KOLLA_INVENTORY"
kolla-ansible post-deploy -i "$KOLLA_INVENTORY"

Failure 2 — Wrong Inventory Path

Symptom

Kolla tried to contact sample hosts:

control01
control02
control03
network01
network02
compute01
storage01
monitoring01

Error:

Could not resolve hostname control01
Could not resolve hostname compute01

Reason

$KOLLA_INVENTORY was still pointing at the stock inventory:

/opt/kolla-ansible/inventory/multinode

instead of your homelab inventory:

/opt/kolla-ansible/inventory/multinode-homelab

Fix

Explicitly set:

export KOLLA_INVENTORY=/opt/kolla-ansible/inventory/multinode-homelab

Then validate:

ansible -i "$KOLLA_INVENTORY" all --list-hosts

Expected:

localhost
ctrl
cmp
gpu

Failure 3 — Minimal Inventory Did Not Have baremetal

Symptom

bootstrap-servers appeared to succeed but did not actually bootstrap anything useful.

Output included:

Could not match supplied host pattern, ignoring: baremetal
PLAY [Apply role baremetal]
skipping: no hosts matched

Reason

The inventory had basic groups such as:

[control]
[network]
[compute]
[monitoring]

but it did not include the Kolla-required group hierarchy:

[baremetal:children]
control
network
compute
storage
monitoring

Kolla uses baremetal as the host group for server preparation.

Fix

Base the homelab inventory on the official Kolla multinode inventory, then patch in the real hosts.

Required result:

@baremetal:
@control:
ctrl
@network:
ctrl
@compute:
cmp
gpu
@monitoring:
ctrl

Validation:

ansible -i "$KOLLA_INVENTORY" baremetal --list-hosts

Expected:

ctrl
cmp
gpu

Failure 4 — Missing kolla-logs Group

Symptom

Deploy failed with:

'dict object' has no attribute 'kolla-logs'

The failing task was:

TASK [common : Creating log volume]

Reason

Kolla expected this group:

[kolla-logs]

or:

[kolla-logs:children]

but your inventory did not define it.

Kolla uses this group to decide which hosts should get the shared kolla_logs Docker volume.

Fix

Add:

[kolla-logs:children]
baremetal

Why this was needed:

ctrl, cmp, and gpu all need Kolla log volume support.

Failure 5 — Horizon Bootstrap Failed with No module named MySQLdb

Symptom

Horizon failed during bootstrap:

TASK [horizon : Running Horizon bootstrap container]
ModuleNotFoundError: No module named 'MySQLdb'
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

Reason

Horizon attempted to use a database-backed configuration, which required the Python MySQL client inside the Horizon container.

The problematic setting was:

horizon_backend_database: "yes"

Fix

Changed to:

horizon_backend_database: "no"

Why this was needed:

For the first homelab deployment, Horizon does not need database-backed sessions/configuration.
Disabling this avoided the missing MySQLdb/mysqlclient dependency path.

Horizon later came up healthy:

horizon Up healthy

Failure 6 — Compute Nodes Did Not Get Nova/Neutron Containers

Symptom

On cmp and gpu, only Open vSwitch containers were present:

openvswitch_vswitchd
openvswitch_db

Missing containers:

nova_compute
nova_libvirt
nova_ssh
neutron_openvswitch_agent

Reason

The generic [compute] group existed, but not all Kolla service groups were correctly mapped to it.

Kolla needs groups such as:

[nova-compute:children]
[nova-libvirt:children]
[nova-ssh:children]
[neutron-openvswitch-agent:children]

to point at the compute nodes.

Fix

Added service group mappings:

[nova-compute:children]
compute

[nova-libvirt:children]
compute

[nova-ssh:children]
compute

[neutron-openvswitch-agent:children]
compute
network

[neutron-dhcp-agent:children]
network

[neutron-l3-agent:children]
network

[neutron-metadata-agent:children]
network

[openvswitch:children]
network
compute

Why this was needed:

The generic compute group tells Ansible where compute nodes are.
The Kolla service groups tell Kolla which containers to place on those nodes.

After this, Nova and Neutron compute-side services deployed correctly.


Failure 7 — kolla_toolbox Missing on Compute Nodes

Symptom

Deploy failed during Open vSwitch configuration:

TASK [openvswitch : Set system-id, hostname and hw-offload]
failed: [cmp]
failed: [gpu]
msg: kolla_toolbox container is not running.

Reason

kolla-toolbox was only assigned to ctrl.

Inventory showed:

@kolla-toolbox:
ctrl

But Open vSwitch tasks on cmp and gpu needed kolla_toolbox locally.

Fix

Expanded kolla-toolbox to all baremetal hosts:

[kolla-toolbox:children]
baremetal

Why this was needed:

Kolla uses kolla_toolbox to run containerised Ansible/OpenStack helper operations.
Because OVS configuration ran on compute nodes, cmp and gpu also needed kolla_toolbox.

After this fix, kolla_toolbox appeared on cmp and gpu.


Final Successful Container State

Controller Node — ctrl

The control plane came up successfully.

horizon                     healthy
neutron_metadata_agent healthy
neutron_l3_agent healthy
neutron_dhcp_agent healthy
neutron_openvswitch_agent healthy
neutron_server healthy
nova_novncproxy healthy
nova_conductor healthy
nova_api healthy
nova_scheduler healthy
openvswitch_vswitchd healthy
openvswitch_db healthy
placement_api healthy
glance_api healthy
keystone healthy
keystone_fernet healthy
keystone_ssh healthy
rabbitmq healthy
memcached healthy
mariadb healthy
keepalived running
proxysql healthy
haproxy healthy
cron running
kolla_toolbox running
fluentd running

This means the following core OpenStack control services are now running:

Keystone
Glance
Placement
Nova API / scheduler / conductor / console proxy
Neutron server / L3 / DHCP / metadata / OVS agent
Horizon
MariaDB
RabbitMQ
Memcached
HAProxy
Keepalived
ProxySQL
Fluentd

Compute Node — cmp

neutron_openvswitch_agent   healthy
nova_compute healthy
nova_libvirt healthy
nova_ssh healthy
kolla_toolbox running
openvswitch_vswitchd healthy
openvswitch_db healthy
cron running
fluentd running

This means cmp is successfully acting as a Nova compute node.

Compute/GPU Node — gpu

neutron_openvswitch_agent   healthy
nova_compute healthy
nova_libvirt healthy
nova_ssh healthy
kolla_toolbox running
openvswitch_vswitchd healthy
openvswitch_db healthy
cron running
fluentd running

This means gpu is also successfully acting as a Nova compute node, ready for future GPU passthrough work.


Key Final Inventory Lessons

The most important lesson is that a Kolla inventory must not only define physical role groups like:

[control]
[network]
[compute]
[monitoring]

It must also define Kolla service placement groups such as:

[baremetal:children]
[kolla-logs:children]
[kolla-toolbox:children]
[nova-compute:children]
[nova-libvirt:children]
[nova-ssh:children]
[neutron-openvswitch-agent:children]
[openvswitch:children]

Your final working principle was:

Role groups describe the node purpose.
Service groups describe which containers Kolla deploys where.

Key Final Commands

source /opt/kolla-ansible/kolla-env.sh

export KOLLA_INVENTORY=/opt/kolla-ansible/inventory/multinode-homelab

ansible -i "$KOLLA_INVENTORY" baremetal --list-hosts

ansible -i "$KOLLA_INVENTORY" baremetal -m ping

ansible -i "$KOLLA_INVENTORY" baremetal -m command -a "whoami" -b

kolla-ansible bootstrap-servers -i "$KOLLA_INVENTORY"

kolla-ansible prechecks -i "$KOLLA_INVENTORY"

kolla-ansible pull -i "$KOLLA_INVENTORY"

kolla-ansible deploy -i "$KOLLA_INVENTORY"

kolla-ansible post-deploy -i "$KOLLA_INVENTORY"

Remember the required command order:

kolla-ansible <command> -i "$KOLLA_INVENTORY"

not:

kolla-ansible -i "$KOLLA_INVENTORY" <command>

Current Status

Your Kolla-Ansible OpenStack deployment is now successfully running.

Control plane: healthy on ctrl
Compute plane: healthy on cmp and gpu
Networking agents: healthy
Nova compute: healthy
Libvirt: healthy
Horizon: healthy
Core API services: healthy

Next logical step:

Run post-deploy, source admin-openrc.sh, then create:
1. image
2. flavor
3. provider network
4. tenant network
5. router
6. security group rules
7. test instance

Check Outputs

sont@ctrl:/opt/kolla-ansible/inventory$ sudo cp /etc/kolla/admin-openrc.sh .
sont@ctrl:/opt/kolla-ansible/inventory$ sudo chown sont:sont admin-openrc.sh 
sont@ctrl:/opt/kolla-ansible/inventory$ source admin-openrc.sh 
sont@ctrl:/opt/kolla-ansible/inventory$ openstack service list
+----------------------------------+-----------+-----------+
| ID                               | Name      | Type      |
+----------------------------------+-----------+-----------+
| 4fba4097a217483886c5aa0e269ac2a9 | placement | placement |
| ab459901f2514af1880ec3d1fb5f3387 | nova      | compute   |
| ce07267e880c47f0ab214dbfffa55837 | glance    | image     |
| df584e166b2c4844b056d13440a4281a | keystone  | identity  |
| f8a5ca68ae3b4a3ea3795bddd6208459 | neutron   | network   |
+----------------------------------+-----------+-----------+
sont@ctrl:/opt/kolla-ansible/inventory$ openstack endpoint list
+----------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
| ID                         | Region    | Service Name | Service Type | Enabled | Interface | URL                        |
+----------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
| 224541dce37e407eb778facf59 | RegionOne | neutron      | network      | True    | internal  | http://192.168.1.50:9696   |
| d44d05                     |           |              |              |         |           |                            |
| 258f717194d04d97a187933a8b | RegionOne | nova         | compute      | True    | public    | http://192.168.1.50:8774/v |
| 18eab2                     |           |              |              |         |           | 2.1                        |
| 26e8dfd1b659471bbbd355acfd | RegionOne | keystone     | identity     | True    | public    | http://192.168.1.50:5000   |
| 1aa590                     |           |              |              |         |           |                            |
| 936e3da929f1485e86eea8e921 | RegionOne | placement    | placement    | True    | internal  | http://192.168.1.50:8780   |
| f06af6                     |           |              |              |         |           |                            |
| 96c275bbfa4b428b951dba7d0a | RegionOne | nova         | compute      | True    | internal  | http://192.168.1.50:8774/v |
| 787393                     |           |              |              |         |           | 2.1                        |
| 9aa846ceb971403c9b19b34716 | RegionOne | keystone     | identity     | True    | internal  | http://192.168.1.50:5000   |
| 9175d0                     |           |              |              |         |           |                            |
| a257e3b78a4e419ca6fbf6d86c | RegionOne | neutron      | network      | True    | public    | http://192.168.1.50:9696   |
| ef66eb                     |           |              |              |         |           |                            |
| a4a8771f830a4d018a46066a5f | RegionOne | placement    | placement    | True    | public    | http://192.168.1.50:8780   |
| 9d575e                     |           |              |              |         |           |                            |
| a89e7109da3b408cb352ec0482 | RegionOne | glance       | image        | True    | internal  | http://192.168.1.50:9292   |
| eac9ec                     |           |              |              |         |           |                            |
| d67c2e7ccdff4585be5e356356 | RegionOne | glance       | image        | True    | public    | http://192.168.1.50:9292   |
| 415a1a                     |           |              |              |         |           |                            |
+----------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
sont@ctrl:/opt/kolla-ansible/inventory$ openstack compute service list
+--------------------------------------+----------------+------+----------+---------+-------+----------------------------+
| ID                                   | Binary         | Host | Zone     | Status  | State | Updated At                 |
+--------------------------------------+----------------+------+----------+---------+-------+----------------------------+
| 624752eb-ef96-4182-bd3a-187da0c80480 | nova-scheduler | ctrl | internal | enabled | up    | 2026-06-26T12:12:58.000000 |
| 4399d86f-ecc1-411e-ae98-7dfe407a0e40 | nova-conductor | ctrl | internal | enabled | up    | 2026-06-26T12:12:59.000000 |
| ad6e00f5-b243-4bee-a1f6-fa213b510e27 | nova-compute   | cmp  | nova     | enabled | up    | 2026-06-26T12:13:01.000000 |
| d78376b1-a8d1-4f67-a42c-d0f50546f1b6 | nova-compute   | gpu  | nova     | enabled | up    | 2026-06-26T12:13:00.000000 |
+--------------------------------------+----------------+------+----------+---------+-------+----------------------------+
sont@ctrl:/opt/kolla-ansible/inventory$ openstack hypervisor list
+--------------------------------------+---------------------+-----------------+--------------+-------+
| ID                                   | Hypervisor Hostname | Hypervisor Type | Host IP      | State |
+--------------------------------------+---------------------+-----------------+--------------+-------+
| c5d4fbce-a5d8-4f65-be4b-6959d8c89261 | cmp                 | QEMU            | 192.168.1.52 | up    |
| 1ca9b9f1-39f9-4496-bb9e-8b5651c5233e | gpu                 | QEMU            | 192.168.1.53 | up    |
+--------------------------------------+---------------------+-----------------+--------------+-------+
sont@ctrl:/opt/kolla-ansible/inventory$ openstack network agent list
+-----------------------+--------------------+------+-------------------+-------+-------+--------------------------+
| ID                    | Agent Type         | Host | Availability Zone | Alive | State | Binary                   |
+-----------------------+--------------------+------+-------------------+-------+-------+--------------------------+
| 2c2a4dcb-f9ba-4cef-   | DHCP agent         | ctrl | nova              | :-)   | UP    | neutron-dhcp-agent       |
| bb58-7d77f09ac24d     |                    |      |                   |       |       |                          |
| 37447271-637b-47db-   | Metadata agent     | ctrl | None              | :-)   | UP    | neutron-metadata-agent   |
| 942f-787710605c84     |                    |      |                   |       |       |                          |
| 4391c2b2-99e2-442f-   | Open vSwitch agent | ctrl | None              | :-)   | UP    | neutron-openvswitch-     |
| ab59-fedbe06c8002     |                    |      |                   |       |       | agent                    |
| 76cb0360-46b2-4ce3-   | Open vSwitch agent | gpu  | None              | :-)   | UP    | neutron-openvswitch-     |
| a7c0-1e21273e128a     |                    |      |                   |       |       | agent                    |
| a8012c92-422a-409f-   | L3 agent           | ctrl | nova              | :-)   | UP    | neutron-l3-agent         |
| bf21-6d1554415bba     |                    |      |                   |       |       |                          |
| d9aede9f-634a-421c-   | Open vSwitch agent | cmp  | None              | :-)   | UP    | neutron-openvswitch-     |
| 9389-701233ea9564     |                    |      |                   |       |       | agent                    |
+-----------------------+--------------------+------+-------------------+-------+-------+--------------------------+
sont@ctrl:/opt/kolla-ansible/inventory$ openstack image list

sont@ctrl:/opt/kolla-ansible/inventory$ ansible -i "$KOLLA_INVENTORY" control,compute \
  -m shell \
  -a "hostname; docker ps | sort" \
  -b
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
ctrl | CHANGED | rc=0 >>
ctrl
0253a7dca318   quay.io/openstack.kolla/glance-api:2024.2-ubuntu-noble                  "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   glance_api
066667ca6242   quay.io/openstack.kolla/neutron-openvswitch-agent:2024.2-ubuntu-noble   "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   neutron_openvswitch_agent
11197c3cd2c6   quay.io/openstack.kolla/neutron-server:2024.2-ubuntu-noble              "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   neutron_server
1ae4b40eea11   quay.io/openstack.kolla/fluentd:2024.2-ubuntu-noble                     "dumb-init --single-…"   2 hours ago         Up 2 hours                             fluentd
20c1319bf778   quay.io/openstack.kolla/keepalived:2024.2-ubuntu-noble                  "dumb-init --single-…"   2 hours ago         Up 2 hours                             keepalived
278c38f1ef10   quay.io/openstack.kolla/cron:2024.2-ubuntu-noble                        "dumb-init --single-…"   2 hours ago         Up 2 hours                             cron
31501f4c1668   quay.io/openstack.kolla/keystone-fernet:2024.2-ubuntu-noble             "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   keystone_fernet
47a81912bccd   quay.io/openstack.kolla/keystone:2024.2-ubuntu-noble                    "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   keystone
4ab911daad43   quay.io/openstack.kolla/keystone-ssh:2024.2-ubuntu-noble                "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   keystone_ssh
539dbeec18fd   quay.io/openstack.kolla/neutron-dhcp-agent:2024.2-ubuntu-noble          "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   neutron_dhcp_agent
5eb699a78275   quay.io/openstack.kolla/mariadb-server:2024.2-ubuntu-noble              "dumb-init -- kolla_…"   2 hours ago         Up 2 hours (healthy)                   mariadb
716d386b4b09   quay.io/openstack.kolla/openvswitch-db-server:2024.2-ubuntu-noble       "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   openvswitch_db
776b0ef13c84   quay.io/openstack.kolla/nova-api:2024.2-ubuntu-noble                    "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   nova_api
821425b7ebe0   quay.io/openstack.kolla/kolla-toolbox:2024.2-ubuntu-noble               "dumb-init --single-…"   2 hours ago         Up 2 hours                             kolla_toolbox
923f903a1c09   quay.io/openstack.kolla/openvswitch-vswitchd:2024.2-ubuntu-noble        "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   openvswitch_vswitchd
CONTAINER ID   IMAGE                                                                   COMMAND                  CREATED             STATUS                       PORTS     NAMES
b0e27d552502   quay.io/openstack.kolla/neutron-l3-agent:2024.2-ubuntu-noble            "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   neutron_l3_agent
b2ec4e48b2a3   quay.io/openstack.kolla/neutron-metadata-agent:2024.2-ubuntu-noble      "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   neutron_metadata_agent
b5c8d10c923a   quay.io/openstack.kolla/proxysql:2024.2-ubuntu-noble                    "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   proxysql
beb8d087dda0   quay.io/openstack.kolla/nova-scheduler:2024.2-ubuntu-noble              "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   nova_scheduler
c860a2b26390   quay.io/openstack.kolla/haproxy:2024.2-ubuntu-noble                     "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   haproxy
ca9a63e5aae7   quay.io/openstack.kolla/nova-conductor:2024.2-ubuntu-noble              "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   nova_conductor
caac94838353   quay.io/openstack.kolla/placement-api:2024.2-ubuntu-noble               "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   placement_api
d784ebe7f75f   quay.io/openstack.kolla/nova-novncproxy:2024.2-ubuntu-noble             "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   nova_novncproxy
d92465942b9f   quay.io/openstack.kolla/rabbitmq:2024.2-ubuntu-noble                    "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   rabbitmq
da0ee0b76aa1   quay.io/openstack.kolla/memcached:2024.2-ubuntu-noble                   "dumb-init --single-…"   2 hours ago         Up 2 hours (healthy)                   memcached
e52fef080cf6   quay.io/openstack.kolla/horizon:2024.2-ubuntu-noble                     "dumb-init --single-…"   About an hour ago   Up About an hour (healthy)             horizon
gpu | CHANGED | rc=0 >>
gpu
01c2c9fd63b7   quay.io/openstack.kolla/openvswitch-vswitchd:2024.2-ubuntu-noble        "dumb-init --single-…"   2 hours ago      Up 23 minutes (healthy)             openvswitch_vswitchd
1f3874d02aee   quay.io/openstack.kolla/neutron-openvswitch-agent:2024.2-ubuntu-noble   "dumb-init --single-…"   18 minutes ago   Up 18 minutes (healthy)             neutron_openvswitch_agent
30c7feebb229   quay.io/openstack.kolla/fluentd:2024.2-ubuntu-noble                     "dumb-init --single-…"   2 hours ago      Up 30 minutes                       fluentd
335046b7df5b   quay.io/openstack.kolla/cron:2024.2-ubuntu-noble                        "dumb-init --single-…"   2 hours ago      Up 28 minutes                       cron
8d885c065cfd   quay.io/openstack.kolla/kolla-toolbox:2024.2-ubuntu-noble               "dumb-init --single-…"   28 minutes ago   Up 28 minutes                       kolla_toolbox
CONTAINER ID   IMAGE                                                                   COMMAND                  CREATED          STATUS                    PORTS     NAMES
a0c3bc35325c   quay.io/openstack.kolla/nova-compute:2024.2-ubuntu-noble                "dumb-init --single-…"   20 minutes ago   Up 20 minutes (healthy)             nova_compute
bd4e06eb19e7   quay.io/openstack.kolla/openvswitch-db-server:2024.2-ubuntu-noble       "dumb-init --single-…"   2 hours ago      Up 2 hours (healthy)                openvswitch_db
f6b7232e2700   quay.io/openstack.kolla/nova-libvirt:2024.2-ubuntu-noble                "dumb-init --single-…"   20 minutes ago   Up 20 minutes (healthy)             nova_libvirt
fe0b5f799aa1   quay.io/openstack.kolla/nova-ssh:2024.2-ubuntu-noble                    "dumb-init --single-…"   21 minutes ago   Up 20 minutes (healthy)             nova_ssh
cmp | CHANGED | rc=0 >>
cmp
01e5e8229632   quay.io/openstack.kolla/kolla-toolbox:2024.2-ubuntu-noble               "dumb-init --single-…"   28 minutes ago   Up 28 minutes                       kolla_toolbox
1c73108c806f   quay.io/openstack.kolla/fluentd:2024.2-ubuntu-noble                     "dumb-init --single-…"   2 hours ago      Up 30 minutes                       fluentd
1eddc69e5173   quay.io/openstack.kolla/nova-compute:2024.2-ubuntu-noble                "dumb-init --single-…"   20 minutes ago   Up 20 minutes (healthy)             nova_compute
2025b00b5127   quay.io/openstack.kolla/nova-ssh:2024.2-ubuntu-noble                    "dumb-init --single-…"   21 minutes ago   Up 20 minutes (healthy)             nova_ssh
49d129bf5ff0   quay.io/openstack.kolla/neutron-openvswitch-agent:2024.2-ubuntu-noble   "dumb-init --single-…"   18 minutes ago   Up 18 minutes (healthy)             neutron_openvswitch_agent
5d3435797022   quay.io/openstack.kolla/cron:2024.2-ubuntu-noble                        "dumb-init --single-…"   2 hours ago      Up 28 minutes                       cron
7cf1e34e5bdb   quay.io/openstack.kolla/openvswitch-db-server:2024.2-ubuntu-noble       "dumb-init --single-…"   2 hours ago      Up 2 hours (healthy)                openvswitch_db
CONTAINER ID   IMAGE                                                                   COMMAND                  CREATED          STATUS                    PORTS     NAMES
a03df63feba4   quay.io/openstack.kolla/nova-libvirt:2024.2-ubuntu-noble                "dumb-init --single-…"   20 minutes ago   Up 20 minutes (healthy)             nova_libvirt
e221e25c79a5   quay.io/openstack.kolla/openvswitch-vswitchd:2024.2-ubuntu-noble        "dumb-init --single-…"   2 hours ago      Up 23 minutes (healthy)             openvswitch_vswitchd