#!/bin/bash lxc="lxc" lxc_exec="lxc exec" inst_name="jammy-devstack" ${lxc} delete ${inst_name} --force ${lxc} launch ubuntu:jammy ${inst_name} --vm -c limits.cpu=4 -c limits.memory=8GiB echo -n "Checking VM status of ${inst_name} " while true ; do num_of_procs=$(${lxc} info ${inst_name} | yq .Resources.Processes) [[ ${num_of_procs} -gt 0 ]] && break sleep 3 echo -n "." done echo done echo -n "Checking cloud-init status of ${inst_name}" while true ; do status=$(${lxc_exec} ${inst_name} -- cloud-init status | grep status | awk '{print $2}') [[ "${status}" == "done" ]] && break [[ "${status}" == "error" ]] && break sleep 3 echo -n "." done echo done ${lxc_exec} ${inst_name} -- sudo apt -y remove python3-httplib2 python3-pyasn1 python3-pyasn1-modules cat > initialise.sh << EOF cd /home/ubuntu git clone -b stable/2024.2 https://opendev.org/openstack/devstack cp local.conf devstack cd devstack ./stack.sh EOF IP_ADDR=$(${lxc} info ${inst_name} | yq '.Resources.["Network usage"].enp5s0.["IP addresses"].inet' | awk -F'/' '{print $1}') cat > local.conf << EOF [[local|localrc]] ADMIN_PASSWORD=somesecretpassword DATABASE_PASSWORD=\$ADMIN_PASSWORD RABBIT_PASSWORD=\$ADMIN_PASSWORD SERVICE_PASSWORD=\$ADMIN_PASSWORD HOST_IP=${IP_ADDR} EOF ${lxc} file push initialise.sh ${inst_name}/home/ubuntu/ ${lxc} file push local.conf ${inst_name}/home/ubuntu/ ${lxc_exec} ${inst_name} -- chmod +x /home/ubuntu/initialise.sh ${lxc_exec} ${inst_name} -- sudo -u ubuntu /home/ubuntu/initialise.sh