From b2ea3e6b84c4561308bee82bd6d6e48f91b72b1b Mon Sep 17 00:00:00 2001 From: weimens <4752766+weimens@users.noreply.github.com> Date: Mon, 14 Jun 2021 17:20:31 +0200 Subject: [PATCH 1/3] Install prerequisites. --- kolla3/prepare.sh | 34 +++++++++++++++++++++------------- kolla3/requirements.txt | 8 ++++++++ 2 files changed, 29 insertions(+), 13 deletions(-) mode change 100644 => 100755 kolla3/prepare.sh create mode 100644 kolla3/requirements.txt diff --git a/kolla3/prepare.sh b/kolla3/prepare.sh old mode 100644 new mode 100755 index 6613c3f..bb60d9f --- a/kolla3/prepare.sh +++ b/kolla3/prepare.sh @@ -1,42 +1,50 @@ - +#!/bin/bash +set -e ################################################################# - Installs software on a virgin Ubuntu 20 - Probably needs to run on the deployer only +# Installs software on a virgin Ubuntu 20 +# Probably needs to run on the deployer only ################################################################# +sudo apt update sudo apt install python3-dev libffi-dev gcc libssl-dev -y +sudo apt install qemu-utils virtinst virt-manager git cloud-image-utils docker.io curl -y +sudo usermod -a -G libvirt $USER +sudo usermod -a -G kvm $USER + +[ ! -f ~/.ssh/id_ed25519 ] && ssh-keygen -f ~/.ssh/id_ed25519 -t ed25519 -C "$USER@labserver" -N "" # make venv # sudo apt install python3-venv -y python3 -m venv ~/venv + source ~/venv/bin/activate -echo source ~/venv/bin/activate >> .bashrc +echo source ~/venv/bin/activate >> ~/.bashrc -# update pip and install the correct version of Ansible +# update pip and install requirements # pip install -U pip -pip install 'ansible<2.10' +pip install -r $(dirname "$0")/requirements.txt # install and configure Kolla-Ansible -# -pip install kolla-ansible sudo mkdir -p /etc/kolla -sudo chown stack:stack /etc/kolla +sudo chown $USER:$USER /etc/kolla cp -r ~/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla -cp ~/venv/share/kolla-ansible/ansible/inventory/* . +cp $(dirname "$0")/globals.yml /etc/kolla +ln -s $(dirname "$0")/multi-compute ./multi-compute # Ansible config # -sudo mkdir /etc/ansible +sudo mkdir -p /etc/ansible cat < Date: Mon, 14 Jun 2021 17:21:46 +0200 Subject: [PATCH 2/3] Add script for network setup. --- kolla3/make-net.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 kolla3/make-net.sh diff --git a/kolla3/make-net.sh b/kolla3/make-net.sh new file mode 100755 index 0000000..a70adf2 --- /dev/null +++ b/kolla3/make-net.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -e + +virsh net-define $(dirname "$0")/lbmgmt.xml +virsh net-autostart lbmgmt +virsh net-start lbmgmt + +virsh net-define $(dirname "$0")/provider.xml +virsh net-autostart provider +virsh net-start provider From ad71b0d3b00abf7af87a9b2fb05574d8482b4d64 Mon Sep 17 00:00:00 2001 From: weimens <4752766+weimens@users.noreply.github.com> Date: Mon, 14 Jun 2021 17:26:48 +0200 Subject: [PATCH 3/3] Make use of cloud init for vm preparation. --- .gitignore | 1 + kolla3/make-CONSTANTS.sh | 7 +++++ kolla3/make-HELPER.sh | 60 ++++++++++++++++++++++++++++++++++++++++ kolla3/make-computes.sh | 22 ++++++++++++--- kolla3/make-elastic.sh | 31 +++++++++++++++++++-- kolla3/make-prepare.sh | 11 ++++++++ kolla3/make-servers.sh | 28 ++++++++++++++----- 7 files changed, 146 insertions(+), 14 deletions(-) create mode 100644 .gitignore create mode 100644 kolla3/make-CONSTANTS.sh create mode 100644 kolla3/make-HELPER.sh mode change 100644 => 100755 kolla3/make-computes.sh mode change 100644 => 100755 kolla3/make-elastic.sh create mode 100755 kolla3/make-prepare.sh mode change 100644 => 100755 kolla3/make-servers.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0c36de --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +kolla3/images-and-isos diff --git a/kolla3/make-CONSTANTS.sh b/kolla3/make-CONSTANTS.sh new file mode 100644 index 0000000..372d2ee --- /dev/null +++ b/kolla3/make-CONSTANTS.sh @@ -0,0 +1,7 @@ + +SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +IMAGES_AND_ISOS=$SCRIPTPATH/images-and-isos +BASE_IMAGE=$IMAGES_AND_ISOS/focal-server-cloudimg-amd64.img +OS_VARIANT="ubuntu20.04" +PUB_KEY=$(cat ~/.ssh/id_ed25519.pub) + diff --git a/kolla3/make-HELPER.sh b/kolla3/make-HELPER.sh new file mode 100644 index 0000000..726a5dd --- /dev/null +++ b/kolla3/make-HELPER.sh @@ -0,0 +1,60 @@ + + +make_cloud_init_seed(){ + # creates $NAME-cloud_init_seed.iso + + local NAME=$1 + local HOST_IP=$2 + + IID=$(uuidgen) + + cat >$NAME-meta-data <$NAME-network_config_static.cfg <$NAME-cloud_init.cfg <> /etc/ssh/sshd_config + - restart ssh + +package_update: true +packages: + - qemu-guest-agent +EOF + + cloud-localds -v --network-config=$NAME-network_config_static.cfg $NAME-cloud_init_seed.iso $NAME-cloud_init.cfg $NAME-meta-data + rm $NAME-network_config_static.cfg $NAME-cloud_init.cfg $NAME-meta-data +} + diff --git a/kolla3/make-computes.sh b/kolla3/make-computes.sh old mode 100644 new mode 100755 index 6cd33c7..d35a30c --- a/kolla3/make-computes.sh +++ b/kolla3/make-computes.sh @@ -1,3 +1,9 @@ +#!/bin/bash +set -e + +source $(dirname "$0")/make-CONSTANTS.sh +source $(dirname "$0")/make-HELPER.sh + if [[ $# != 1 ]] then echo need machine number and nothing else @@ -6,10 +12,18 @@ else NUM=$1 fi -[ ! -f c$NUM.qcow2 ] && sudo qemu-img create -f qcow2 -b ubuntu-base.qcow2 -F qcow2 c$NUM.qcow2 +pushd $IMAGES_AND_ISOS + +make_cloud_init_seed c$NUM $((200 + $NUM)) +[ ! -f c$NUM.qcow2 ] && sudo qemu-img create -f qcow2 -o backing_file=$BASE_IMAGE -F qcow2 ./c$NUM.qcow2 50G sudo virt-install --noautoconsole --cpu host --name c$NUM --ram $((12*1024)) --vcpus 3 \ - --graphics vnc,listen=0.0.0.0,port=593$1 \ - --network network=default --network network=provider --network network=lbmgmt \ + --graphics vnc,listen=0.0.0.0,port=591$NUM \ + --virt-type kvm --os-type Linux --os-variant $OS_VARIANT \ + --network network=default --network network=provider --network network=lbmgmt \ --import \ - --disk c$NUM.qcow2,bus=scsi + --disk ./c$NUM.qcow2,bus=scsi \ + --disk path=./c$NUM-cloud_init_seed.iso,device=cdrom \ + +popd + diff --git a/kolla3/make-elastic.sh b/kolla3/make-elastic.sh old mode 100644 new mode 100755 index a37085b..a0b1678 --- a/kolla3/make-elastic.sh +++ b/kolla3/make-elastic.sh @@ -1,4 +1,29 @@ -[[ ! -f elastic.qcow2 ]] && sudo qemu-img create -f qcow2 -b ubuntu-base.qcow2 -F qcow2 elastic.qcow2 +#!/bin/bash +set -e + +source $(dirname "$0")/make-CONSTANTS.sh +source $(dirname "$0")/make-HELPER.sh + +if [[ $# != 1 ]] +then + echo need machine number and nothing else + exit 1 +else + NUM=$1 +fi + +pushd $IMAGES_AND_ISOS + +make_cloud_init_seed elastic $((200 + $NUM)) +[ ! -f elastic.qcow2 ] && sudo qemu-img create -f qcow2 -o backing_file=$BASE_IMAGE -F qcow2 ./elastic.qcow2 50G + sudo virt-install --noautoconsole --cpu host --name elastic --ram 8192 --vcpus 2 \ - --graphics vnc,listen=0.0.0.0,port=5919 --network network=default \ - --import --disk elastic.qcow2,bus=scsi + --graphics vnc,listen=0.0.0.0,port=591$NUM \ + --virt-type kvm --os-type Linux --os-variant $OS_VARIANT \ + --network network=default --network network=provider --network network=lbmgmt \ + --import \ + --disk ./elastic.qcow2,bus=scsi \ + --disk path=./elastic-cloud_init_seed.iso,device=cdrom \ + +popd + diff --git a/kolla3/make-prepare.sh b/kolla3/make-prepare.sh new file mode 100755 index 0000000..8a4b490 --- /dev/null +++ b/kolla3/make-prepare.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e + +source $(dirname "$0")/make-CONSTANTS.sh + +mkdir -p $IMAGES_AND_ISOS + +[ ! -f $BASE_IMAGE ] && wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img -O $BASE_IMAGE +sha256sum $BASE_IMAGE +qemu-img info $BASE_IMAGE + diff --git a/kolla3/make-servers.sh b/kolla3/make-servers.sh old mode 100644 new mode 100755 index 8af6ae7..e46d245 --- a/kolla3/make-servers.sh +++ b/kolla3/make-servers.sh @@ -1,3 +1,9 @@ +#!/bin/bash +set -e + +source $(dirname "$0")/make-CONSTANTS.sh +source $(dirname "$0")/make-HELPER.sh + if [[ $# != 1 ]] then echo need machine number and nothing else @@ -6,14 +12,22 @@ else NUM=$1 fi -[ ! -f k$NUM.qcow2 ] && sudo qemu-img create -f qcow2 -b ubuntu-base.qcow2 -F qcow2 k$NUM.qcow2 +pushd $IMAGES_AND_ISOS + +make_cloud_init_seed k$NUM $((200 + $NUM)) +[ ! -f k$NUM.qcow2 ] && sudo qemu-img create -f qcow2 -o backing_file=$BASE_IMAGE -F qcow2 ./k$NUM.qcow2 50G sudo virt-install --noautoconsole --cpu host --name k$NUM --ram $((12*1024)) --vcpus 3 \ - --graphics vnc,listen=0.0.0.0,port=591$1 \ + --graphics vnc,listen=0.0.0.0,port=591$NUM \ + --virt-type kvm --os-type Linux --os-variant $OS_VARIANT \ --network network=default --network network=provider --network network=lbmgmt \ --import \ - --disk k$NUM.qcow2,bus=scsi \ - --disk k$NUM-swift1.qcow2,size=50,bus=scsi \ - --disk k$NUM-swift2.qcow2,size=50,bus=scsi \ - --disk k$NUM-swift3.qcow2,size=50,bus=scsi \ - --disk k$NUM-cinder.qcow2,size=50,bus=scsi + --disk ./k$NUM.qcow2,bus=scsi \ + --disk ./k$NUM-swift1.qcow2,size=50,bus=scsi \ + --disk ./k$NUM-swift2.qcow2,size=50,bus=scsi \ + --disk ./k$NUM-swift3.qcow2,size=50,bus=scsi \ + --disk ./k$NUM-cinder.qcow2,size=50,bus=scsi \ + --disk path=./k$NUM-cloud_init_seed.iso,device=cdrom \ + +popd +