diff options
-rwxr-xr-x | ci/03-maasdeploy.sh | 67 | ||||
-rw-r--r-- | ci/tools.sh | 26 |
2 files changed, 65 insertions, 28 deletions
diff --git a/ci/03-maasdeploy.sh b/ci/03-maasdeploy.sh index 1e93627e..9fb74000 100755 --- a/ci/03-maasdeploy.sh +++ b/ci/03-maasdeploy.sh @@ -2,6 +2,8 @@ #placeholder for deployment script. set -ex +source tools.sh + virtinstall=0 labname=$1 @@ -9,7 +11,8 @@ if [ ! -e $HOME/.ssh/id_rsa ]; then ssh-keygen -N '' -f $HOME/.ssh/id_rsa fi -#install the packages needed +# Install the packages needed +echo_info "Installing and upgrading required packages" sudo apt-get install software-properties-common -y sudo apt-add-repository ppa:juju/stable -y sudo apt-add-repository ppa:maas/stable -y @@ -37,6 +40,7 @@ sudo -H pip install --upgrade pip # # Get labconfig and generate deployconfig.yaml +echo_info "Parsing lab configuration file" case "$labname" in intelpod[569]|orangepod[12]|cengnpod[12] ) array=(${labname//pod/ }) @@ -126,7 +130,7 @@ else sudo mv 90-joid-init /etc/sudoers.d/ fi -echo "... Deployment of maas Started ...." +echo_info "Deployment of MAAS started" # # Virsh preparation @@ -221,7 +225,7 @@ configuremaas(){ compute-external storage-data storage-cluster admin \ tenant-data tenant-api tenant-public do - echo "Creating the space $space" + echo_info "Creating the space $space" maas $PROFILE spaces create name=$space || true done @@ -299,7 +303,7 @@ setupspacenetwork(){ 'storage') JUJU_SPACE="tenant-stor"; DHCP='' ;; 'storagecluster') JUJU_SPACE="storclus"; DHCP='' ;; 'floating') JUJU_SPACE="tenant-public"; DHCP='' ;; - *) JUJU_SPACE='default'; DHCP='OFF'; echo " >>> Unknown SPACE" ;; + *) JUJU_SPACE='default'; DHCP='OFF'; echo_info " >>> Unknown SPACE" ;; esac JUJU_SPACE_ID=$(maas $PROFILE spaces read | jq -r ".[] | select(.name==\"$JUJU_SPACE\")".id) JUJU_VLAN_VID=$(maas $PROFILE subnets read | jq -r ".[] | select(.name==\"$SPACE_CIDR\")".vlan.vid) @@ -381,11 +385,13 @@ addnodes(){ if [ $VIRSHIP != "" ]; then # Check if the IP is not already present among the known hosts if ! ssh-keygen -F $VIRSHIP > /dev/null ; then - echo "SSH fingerprint of the host is not known yet, adding" + echo_info "SSH fingerprint of the host is not known yet, adding to known_hosts" ssh-keyscan -H $VIRSHIP >> ~/.ssh/known_hosts fi fi + echo_info "Creating and adding bootstrap node" + virt-install --connect $VIRSHURL --name bootstrap --ram 4098 --cpu host --vcpus 2 --video \ cirrus --arch x86_64 --disk size=20,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \ $netw --boot network,hd,menu=off --noautoconsole \ @@ -437,31 +443,35 @@ addnodes(){ maas $PROFILE tag update-nodes compute add=$nodeid || true done else - units=`cat deployconfig.json | jq .opnfv.units` + units=`cat deployconfig.json | jq .opnfv.units` - until [ $(($units)) -lt 1 ]; do - units=$(($units - 1)); - NODE_NAME=`cat labconfig.json | jq ".lab.racks[].nodes[$units].name" | cut -d \" -f 2 ` - MAC_ADDRESS=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"admin\").mac"[0] | cut -d \" -f 2 ` - MAC_ADDRESS1=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"floating\").mac"[0] | cut -d \" -f 2 ` - POWER_TYPE=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.type" | cut -d \" -f 2 ` - POWER_IP=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.address" | cut -d \" -f 2 ` - POWER_USER=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.user" | cut -d \" -f 2 ` - POWER_PASS=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.pass" | cut -d \" -f 2 ` - - maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \ - hostname=$NODE_NAME power_type=$POWER_TYPE power_parameters_power_address=$POWER_IP \ - power_parameters_power_user=$POWER_USER power_parameters_power_pass=$POWER_PASS mac_addresses=$MAC_ADDRESS \ - mac_addresses=$MAC_ADDRESS1 architecture='amd64/generic' - done + until [ $(($units)) -lt 1 ]; do + units=$(($units - 1)); + NODE_NAME=`cat labconfig.json | jq ".lab.racks[].nodes[$units].name" | cut -d \" -f 2 ` + MAC_ADDRESS=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"admin\").mac"[0] | cut -d \" -f 2 ` + MAC_ADDRESS1=`cat labconfig.json | jq ".lab.racks[].nodes[$units].nics[] | select(.spaces[]==\"floating\").mac"[0] | cut -d \" -f 2 ` + POWER_TYPE=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.type" | cut -d \" -f 2 ` + POWER_IP=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.address" | cut -d \" -f 2 ` + POWER_USER=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.user" | cut -d \" -f 2 ` + POWER_PASS=`cat labconfig.json | jq ".lab.racks[].nodes[$units].power.pass" | cut -d \" -f 2 ` + + echo_info "Creating node $NODE_NAME" + maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \ + hostname=$NODE_NAME power_type=$POWER_TYPE power_parameters_power_address=$POWER_IP \ + power_parameters_power_user=$POWER_USER power_parameters_power_pass=$POWER_PASS mac_addresses=$MAC_ADDRESS \ + mac_addresses=$MAC_ADDRESS1 architecture='amd64/generic' + done fi maas $PROFILE pods create type=virsh power_address="$VIRSHURL" power_user=$USER # Make sure nodes are added into MAAS and none of them is in commissioning state + i=0 while [ "$(maas $PROFILE nodes read | grep Commissioning )" ]; do + echo_info "Waiting for nodes to finish commissioning. ${i} minutes elapsed." sleep 60 + i=$[$i+1] # Make sure that no nodes have failed commissioning or testing if [ "$(maas $PROFILE nodes read | grep 'Failed' )" ]; @@ -491,7 +501,7 @@ sleep 120 # Let's add the nodes now. Currently works only for virtual deployment. addnodes -echo "... Deployment of maas finish ...." +echo_info "Initial deployment of MAAS finished" #Added the Qtip public to run the Qtip test after install on bare metal nodes. #maas $PROFILE sshkeys new key="`cat ./maas/sshkeys/QtipKey.pub`" @@ -521,6 +531,7 @@ addcloud() { echo " auth-types: [oauth1]" >> maas-cloud.yaml echo " endpoint: $API_SERVERMAAS" >> maas-cloud.yaml + echo_info "Adding cloud $cloudname" juju add-cloud $cloudname maas-cloud.yaml --replace } @@ -538,7 +549,7 @@ if [ -e ./labconfig.json ]; then # Get the NAME/SYS_ID of this node NODE_NAME=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].name") NODE_SYS_ID=$(maas $PROFILE nodes read | jq -r ".[] | select(.hostname==\"$NODE_NAME\")".system_id) - echo ">>> Configuring node $NODE_NAME [$NODE_ID][$NODE_SYS_ID]" + echo_info ">>> Configuring node $NODE_NAME [$NODE_ID][$NODE_SYS_ID]" # Recover the network interfaces list and configure each one # with sorting the list, we have hardware interface first, than the vlan interfaces IF_LIST=$(cat labconfig.json | jq --raw-output ".lab.racks[0].nodes[$NODE_ID].nics[] ".ifname | sort -u ) @@ -551,9 +562,9 @@ if [ -e ./labconfig.json ]; then 'public') IF_MODE='AUTO' ;; 'storage') IF_MODE='AUTO' ;; 'floating') IF_MODE='link_up' ;; - *) SUBNET_CIDR='null'; IF_MODE='null'; echo " >>> Unknown SPACE" ;; + *) SUBNET_CIDR='null'; IF_MODE='null'; echo_info " >>> Unknown SPACE" ;; esac - echo " >>> Configuring interface $IF_NAME [$IF_SPACE][$SUBNET_CIDR]" + echo_info " >>> Configuring interface $IF_NAME [$IF_SPACE][$SUBNET_CIDR]" # if we have a vlan parameter in the space config IF_VLAN=$(cat labconfig.json | jq --raw-output ".opnfv.spaces[] | select(.type==\"$IF_SPACE\")".vlan) @@ -566,7 +577,7 @@ if [ -e ./labconfig.json ]; then # In case of a VLAN interface if ([ $IF_VLAN ] && [ "$IF_VLAN" != "null" ]); then - echo " >>> Configuring VLAN $IF_VLAN" + echo_info " >>> Configuring VLAN $IF_VLAN" VLANID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".id) FABRICID=$(maas $PROFILE subnets read | jq ".[].vlan | select(.vid==$IF_VLAN)".fabric_id) INTERFACE=$(maas $PROFILE interfaces read $NODE_SYS_ID | jq ".[] | select(.vlan.fabric_id==$FABRICID)".id) @@ -605,7 +616,7 @@ if [ -e ./labconfig.json ]; then maas $PROFILE interface link-subnet $NODE_SYS_ID $IF_NAME mode=$IF_MODE subnet=$SUBNET_CIDR || true sleep 2 else - echo " >>> Not configuring, we have an empty Subnet CIDR" + echo_info " >>> Not configuring, we have an empty Subnet CIDR" fi done @@ -623,4 +634,4 @@ fi # # End of scripts # -echo " .... MAAS deployment finished successfully ...." +echo_info " .... MAAS deployment finished successfully ...." diff --git a/ci/tools.sh b/ci/tools.sh new file mode 100644 index 00000000..4eed361b --- /dev/null +++ b/ci/tools.sh @@ -0,0 +1,26 @@ +############################################################################## +# Copyright (c) 2017 Nokia and others. +# +# 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 +############################################################################## + + +####################################### +# Echo printing in yellow bold color +# Arguments: +# Same as for echo +# Returns: +# None +####################################### +function echo_info { ( + # don't clutter the script output with the xtrace of the echo command + { set +x; } 2> /dev/null + + yellow_bold='\033[1;33m' + color_off='\033[0m' + echo "${@:1:($#-1)}" -e "$yellow_bold${@: -1}$color_off"; + ) +} |