60 lines
1.5 KiB
Bash
Executable File
60 lines
1.5 KiB
Bash
Executable File
#!/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
|