#!/usr/bin/env bash dnf install -y git python3-devel libffi-devel gcc openssl-devel python3-libselinux plocate dbus-devel dbus-glib-devel python3 -m venv /opt/src/kolla-venv echo 'source /opt/src/kolla-venv/bin/activate' >> ~/.bashrc source /opt/src/kolla-venv/bin/activate pip install -U pip pip install -U "ansible-core>=2.15" pip install docker dbus-python pip install git+https://opendev.org/openstack/kolla-ansible@stable/2025.2 mkdir -p /etc/kolla cp -a /opt/src/kolla-venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/ chmod 600 /etc/kolla/passwords.yml cp /opt/src/kolla-venv/share/kolla-ansible/ansible/inventory/multinode /etc/kolla/ kolla-ansible install-deps kolla-genpwd PASSWORD='ReallyStrongPasswordDDD' sed -i -e "s@^keystone_admin_password:.*@keystone_admin_password: ${PASSWORD}@g" /etc/kolla/passwords.yml cp -a /etc/kolla/globals.yml /etc/kolla/globals.yml.back GLOBALS_FILENAME="/etc/kolla/globals.yml" set_kolla_options() { local globals_file="$1" shift # We expect the rest of the arguments to be passed as key=value pairs local settings=("$@") for setting in "${settings[@]}"; do # Split the string at the first '=' local key="${setting%%=*}" local value="${setting#*=}" echo "Setting ${key} to ${value}..." # 1. Try to replace commented-out lines: #key: ... # 2. Try to replace active lines: key: ... # Using | as a delimiter to avoid issues with / in paths or IP addresses sed -i "s|^#\?${key}:.*|${key}: ${value}|g" "${globals_file}" done } KOLLA_CONFIG=( "workaround_ansible_issue_8743=yes" "kolla_base_distro=\"ubuntu\"" "openstack_release=\"2025.2\"" "kolla_internal_vip_address=\"192.168.220.19\"" "network_interface=\"enp1s0\"" "network_address_family=\"ipv4\"" "neutron_external_interface=\"enp3s0\"" "enable_cinder=\"yes\"" "enable_cinder_backup=\"yes\"" "enable_cinder_backend_nfs=\"yes\"" "cinder_backup_driver=\"nfs\"" "cinder_backup_share=\"192.168.220.31:/srv/kolla_nfs\"" "nova_compute_virt_type=\"kvm\"" ) # Execute set_kolla_options "${GLOBALS_FILENAME}" "${KOLLA_CONFIG[@]}" mkdir /etc/kolla/config cat < /etc/kolla/config/global.conf [database] max_pool_size = 100 EOF cat < /etc/kolla/config/nfs_shares 192.168.220.31:/srv/kolla_nfs EOF grep " controller-1.openstack.local" /etc/hosts || \ cat <> /etc/hosts 192.168.220.11 controller-1.openstack.local 192.168.220.12 controller-2.openstack.local 192.168.220.13 controller-3.openstack.local 192.168.220.21 compute-1.openstack.local 192.168.220.22 compute-2.openstack.local 192.168.220.31 storage-openstack.openstack.local EOF cat < /etc/kolla/multinode-nodes [control] controller-1.openstack.local controller-2.openstack.local controller-3.openstack.local [network] controller-1.openstack.local controller-2.openstack.local controller-3.openstack.local [compute] compute-1.openstack.local compute-2.openstack.local [monitoring] controller-3.openstack.local [storage] storage-openstack.openstack.local EOF kolla-ansible bootstrap-servers -i /etc/kolla/multinode kolla-ansible prechecks -i /etc/kolla/multinode kolla-ansible deploy -i /etc/kolla/multinode kolla-ansible post-deploy -i /etc/kolla/multinode