diff options
author | Rihab Banday <rihab.banday@ericsson.com> | 2020-07-30 09:16:28 +0000 |
---|---|---|
committer | Rihab Banday <rihab.banday@ericsson.com> | 2020-08-17 10:59:03 +0200 |
commit | 28d1cee5c7b95ae905a4481245d5d5650c87e101 (patch) | |
tree | cbbae35d848e257d6a29e0e31a2dede72d52c5c8 /functions.sh | |
parent | c9677cb936e57045c3a7e56c7368b27c7d09a5ad (diff) |
Update env variable extraction and VM creation steps
This change uses YAML parser to extract environmental variables from PDF
and IDF. Additionally it merges the VM creation step with the main
functions script.
Change-Id: I2089b7a84f15e892d57fbadf06252db8769f0fbf
Signed-off-by: Rihab Banday <rihab.banday@ericsson.com>
Diffstat (limited to 'functions.sh')
-rwxr-xr-x | functions.sh | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/functions.sh b/functions.sh index 129a3a6..b0baf2d 100755 --- a/functions.sh +++ b/functions.sh @@ -22,15 +22,44 @@ clean_up() { # Create jumphost VM create_jump() { - ./create_vm.sh "$VM_NAME" +# Create VM image + sudo mkdir -p "/var/lib/libvirt/images/$VM_NAME" + sudo qemu-img create -f qcow2 \ + -o backing_file=/var/lib/libvirt/images/ubuntu-18.04.qcow2 \ + "/var/lib/libvirt/images/$VM_NAME/$VM_NAME.qcow2" 10G + +# Create VM cloud-init configuration files + cat <<EOL > user-data + #cloud-config + users: + - name: $USERNAME + ssh-authorized-keys: + - $(cat "$HOME/.ssh/id_rsa.pub") + sudo: ['ALL=(ALL) NOPASSWD:ALL'] + groups: sudo + shell: /bin/bash +EOL + cat <<EOL > meta-data + local-hostname: $VM_NAME +EOL + +# Create VM + sudo genisoimage -output "/var/lib/libvirt/images/$VM_NAME/$VM_NAME-cidata.iso" \ + -volid cidata -joliet -rock user-data meta-data + + sudo virt-install --connect qemu:///system --name "$VM_NAME" \ + --ram 4096 --vcpus=4 --os-type linux --os-variant ubuntu16.04 \ + --disk path="/var/lib/libvirt/images/$VM_NAME/$VM_NAME.qcow2",format=qcow2 \ + --disk "/var/lib/libvirt/images/$VM_NAME/$VM_NAME-cidata.iso",device=cdrom \ + --import --network network=default --network bridge="$BRIDGE",model=rtl8139 --noautoconsole jumpbox_ip=$(get_vm_ip) i=0 - while [ -z $jumpbox_ip ]; do + while [ -z "$jumpbox_ip" ]; do sleep $((++i)) jumpbox_ip=$(get_vm_ip) done i=0 - until nc -w5 -z $jumpbox_ip 22; do + until nc -w5 -z "$jumpbox_ip" 22; do sleep $((++i)) done } @@ -42,6 +71,21 @@ get_vm_ip() { # Setup PXE network setup_PXE_network() { +# Extract configuration from PDF/IDF + PXE_IF=$(yq r "$CURRENTPATH"/hw_config/"$VENDOR"/idf.yaml engine.pxe_interface) + PXE_IF_INDEX=$(yq r "$CURRENTPATH"/hw_config/"${VENDOR}"/idf.yaml idf.net_config.oob.interface) + if [[ -z $PXE_IF || -z $PXE_IF_INDEX ]]; then + echo 'one or more variables in IDF are undefined' + exit 1 + fi + PXE_IF_IP=$(yq r "$CURRENTPATH"/hw_config/"$VENDOR"/pdf.yaml jumphost.interfaces.["$PXE_IF_INDEX"].address) + PXE_IF_MAC=$(yq r "$CURRENTPATH"/hw_config/"$VENDOR"/pdf.yaml jumphost.interfaces.["$PXE_IF_INDEX"].mac_address) + if [[ -z $PXE_IF_IP || -z $PXE_IF_MAC ]]; then + echo 'one or more variables in PDF are incorrect' + exit 1 + fi + export NETMASK=255.255.255.0 +# SSH to jumphost # shellcheck disable=SC2087 ssh -o StrictHostKeyChecking=no -tT "$USERNAME"@"$(get_vm_ip)" << EOF sudo ifconfig $PXE_IF up @@ -77,6 +121,11 @@ EOF # Setup networking on provisioned hosts (Adapt setup_network.sh according to your network setup) setup_network() { +# Extract IPs of provisioned nodes from PDF/IDF. When running this function standalone, ensure +# to set $PXE_IF_INDEX + MASTER_IP=$(yq r "$CURRENTPATH"/hw_config/"$VENDOR"/pdf.yaml nodes.[0].interfaces.["$PXE_IF_INDEX"].address) + WORKER_IP=$(yq r "$CURRENTPATH"/hw_config/"$VENDOR"/pdf.yaml nodes.[1].interfaces.["$PXE_IF_INDEX"].address) +# SSH to jumphost # shellcheck disable=SC2087 ssh -tT "$USERNAME"@"$(get_vm_ip)" << EOF ssh -o StrictHostKeyChecking=no root@$MASTER_IP \ |