summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRihab Banday <rihab.banday@ericsson.com>2020-07-30 09:16:28 +0000
committerRihab Banday <rihab.banday@ericsson.com>2020-08-17 10:59:03 +0200
commit28d1cee5c7b95ae905a4481245d5d5650c87e101 (patch)
treecbbae35d848e257d6a29e0e31a2dede72d52c5c8
parentc9677cb936e57045c3a7e56c7368b27c7d09a5ad (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>
-rwxr-xr-xcreate_vm.sh41
-rw-r--r--deploy.env12
-rwxr-xr-xfunctions.sh55
-rw-r--r--hw_config/intel/pdf.yaml2
4 files changed, 54 insertions, 56 deletions
diff --git a/create_vm.sh b/create_vm.sh
deleted file mode 100755
index 74435f2..0000000
--- a/create_vm.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c)
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-# TODO This will be merged in main functions.sh
-
-sudo mkdir -p "/var/lib/libvirt/images/$1"
-sudo qemu-img create -f qcow2 \
- -o backing_file=/var/lib/libvirt/images/ubuntu-18.04.qcow2 \
- "/var/lib/libvirt/images/$1/${1}.qcow2" 10G
-
-# Create cloud-init configuration files
-cat <<EOL > user-data
-#cloud-config
-users:
- - name: ubuntu
- 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
-
-sudo genisoimage -output "/var/lib/libvirt/images/$1/$1-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/$1/${1}.qcow2",format=qcow2 \
- --disk "/var/lib/libvirt/images/$1/${1}-cidata.iso",device=cdrom \
- --import --network network=default \
- --network bridge="$BRIDGE",model=rtl8139 --noautoconsole
diff --git a/deploy.env b/deploy.env
index 71a951a..602dfd8 100644
--- a/deploy.env
+++ b/deploy.env
@@ -7,16 +7,6 @@ export INSTALLER=bmra
export BRIDGE=pxebr
# Jump VM details
-export VM_NAME=kuberef-jump
+export VM_NAME=$(yq r $CURRENTPATH/hw_config/$VENDOR/pdf.yaml jumphost.name)
export USERNAME=ubuntu
export PROJECT_ROOT="/home/ubuntu"
-
-# Network configuration details of PXE interface in VM
-export PXE_IF=ens4
-export PXE_IF_IP=10.10.190.211
-export PXE_IF_MAC=52:54:00:4a:e8:2d
-export NETMASK=255.255.255.0
-
-# IPs of the provisioned nodes
-export MASTER_IP=10.10.190.202
-export WORKER_IP=10.10.190.203
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 \
diff --git a/hw_config/intel/pdf.yaml b/hw_config/intel/pdf.yaml
index 4b7862d..ba0c856 100644
--- a/hw_config/intel/pdf.yaml
+++ b/hw_config/intel/pdf.yaml
@@ -17,7 +17,7 @@ details:
type: baremetal
link: http://wiki.opnfv.org/display/pharos/Intel+Hosting
jumphost:
- name: pod19-jump
+ name: kuberef-jump
node: &nodeparas
type: baremetal
vendor: Intel