source: installer/vagrant/jenkins_deploy_multi_vm.sh @ 96ee53a

lgromero-new-oglive
Last change on this file since 96ee53a was 96ee53a, checked in by lgromero <lgromero@…>, 5 months ago

refs #1202 adds first script of jenkins multi branch

  • Property mode set to 100644
File size: 4.0 KB
Line 
1#!/bin/bash
2
3set -e
4
5export VI_USERNAME="root"
6export VI_SERVER="esxi-jenkins.evlt.uma.es"
7export VI_THUMBPRINT="9F:B9:BD:85:B4:55:55:D3:0D:15:81:70:F9:88:52:5A:B6:F3:A5:E2"
8export GITEA_USER="unizar"
9export VAGRANT_VAGRANTFILE="Vagrantfile-esxi"
10export OGN_MAC_PREFIX=$(printf '00:50:56:%02X:%02X\n' $[RANDOM%64] $[RANDOM%256])
11export PATH=$PATH:/home/user/ovftool/
12
13OGAGENT_VERSION=$(jq -r .ogagent <doc/VERSION.json)
14eval $(grep DEFAULT_OGLIVE=installer/opengnsys_installer_devel_esxi.sh)
15
16set -x
17#cd installer/vagrant
18cp $USER_SSK_PRIVATE_KEY installer/vagrant/config/id_rsa
19#cd -
20set +x
21
22BRANCH_EXTRA=$BRANCH
23EXTRA_NAME=${EXTRA_NAME// /}
24[[ -n $EXTRA_NAME ]] && BRANCH_EXTRA=$BRANCH-$EXTRA_NAME
25OGBOOT_BRANCH=${OGBOOT_BRANCH// /}
26export BRANCH_EXTRA
27export OGDHCP_BRANCH OGBOOT_BRANCH OGREPO_BRANCH OGLOG_BRANCH OGCORE_BRANCH OGGUI_BRANCH
28export VAGRANT_VAGRANTFILE=installer/vagrant/Vagrantfile-esxi
29
30echo ========================= Parameters
31echo BRANCH=$BRANCH
32echo BRANCH_EXTRA=$BRANCH_EXTRA
33echo VM1_COMPONENTS=$VM1_COMPONENTS
34echo VM2_COMPONENTS=$VM2_COMPONENTS
35echo VM3_COMPONENTS=$VM3_COMPONENTS
36echo OGDHCP_BRANCH=$OGDHCP_BRANCH
37echo OGBOOT_BRANCH=$OGBOOT_BRANCH
38echo OGREPO_BRANCH=$OGREPO_BRANCH
39echo OGLOG_BRANCH=$OGLOG_BRANCH
40echo OGCORE_BRANCH=$OGCORE_BRANCH
41echo OGGUI_BRANCH=$OGGUI_BRANCH
42echo OGAGENT_VERSION=$OGAGENT_VERSION
43echo DEFAULT_OGLIVE=$DEFAULT_OGLIVE
44echo VAGRANT_VAGRANTFILE=$VAGRANT_VAGRANTFILE
45
46echo ========================= Copy artefacts from NFS
47[[ -d /mnt/srv/artefactos ]] || mount /mnt     ## untested
48echo Copying /mnt/srv/artefactos/oglive/$DEFAULT_OGLIVE to installer/
49cp -v /mnt/srv/artefactos/oglive/$DEFAULT_OGLIVE installer/
50echo Creating installer/ogagentpkgs-${OGAGENT_VERSION}.tar.gz
51tar -zvcf installer/ogagentpkgs-${OGAGENT_VERSION}.tar.gz -C /mnt/srv/artefactos/ogagent ogagent_${OGAGENT_VERSION}-1_all.deb
52
53echo ========================= Setting up an ESXi network
54installer/vagrant/provision_esxi_net.sh $BRANCH_EXTRA
55
56echo ========================= Creating all server VMs in parallel
57export INSTALL_OPENGNSYS
58export VM1_COMPONENTS VM2_COMPONENTS VM3_COMPONENTS
59export DEFAULT_UDS_REST_URL DEFAULT_UDS_AUTHENTICATOR DEFAULT_UDS_USER DEFAULT_UDS_PASS
60export DEFAULT_OGLIVE
61vagrant up --no-provision
62
63echo ========================= Enumerating hostnames
64VMS=($(vagrant status |awk 'match ($2, /running/) { print $1 }'))
65echo "VMS is (${VMS[@]})"
66
67## obtener las IPs de oglog y ogserver, y exportar las variables
68for I in "${VMS[@]}"; do
69    if [[ "$I" == *-log* ]]; then
70        echo ========================= Gathering oglog IP address
71        J=$(vagrant ssh $I -c 'ip -json address show eth0')
72        #echo "JSON is ($J)"
73        ## 'ip' may return empty entries. Look for the entry that contains actual values
74        OGLOG_IP=$(echo $J |jq -r '[.[] | select(.ifindex | length > 0)][0].addr_info[0].local')
75        echo "OGLOG_IP ($OGLOG_IP)"
76        export OGLOG_IP
77    fi
78    if [[ "$I" == *-server* ]]; then
79        echo ========================= Gathering ogserver IP address
80        J=$(vagrant ssh $I -c 'ip -json address show eth0')
81        #echo "JSON is ($J)"
82        OGSERVER_IP=$(echo $J |jq -r '[.[] | select(.ifindex | length > 0)][0].addr_info[0].local')
83        echo "OGSERVER_IP ($OGSERVER_IP)"
84        export OGSERVER_IP
85    fi
86done
87
88for I in "${VMS[@]}"; do
89    echo ========================= Provisioning $I
90    env |grep DEFAULT_
91    vagrant provision $I 2>&1
92done
93
94echo ========================= Setting up a reverse proxy in nginx
95for I in "${VMS[@]}"; do
96    if [[ "$I" == *-server* ]]; then
97        installer/vagrant/setup-proxy.sh $I $BRANCH_EXTRA
98        break
99    fi
100done
101rm installer/vagrant/config/id_rsa
102
103echo ========================= Terraforming clients
104cd installer/terraform
105terraform init -no-color
106terraform apply -no-color -auto-approve -state=/home/user/w/terraform/states/$BRANCH_EXTRA \
107        -var "num_clients=$NUMBER_OF_CLIENTS" \
108    -var "virtual_network=$BRANCH_EXTRA" \
109    -var "vi_password=$VI_PASSWORD" \
110    -var "mac_prefix=$OGN_MAC_PREFIX" \
111    -var "ogversion=$BRANCH_EXTRA"
Note: See TracBrowser for help on using the repository browser.