1 | #!/bin/bash |
---|
2 | |
---|
3 | set -e |
---|
4 | |
---|
5 | export VI_USERNAME="root" |
---|
6 | export VI_SERVER="esxi-jenkins.evlt.uma.es" |
---|
7 | export VI_THUMBPRINT="9F:B9:BD:85:B4:55:55:D3:0D:15:81:70:F9:88:52:5A:B6:F3:A5:E2" |
---|
8 | export GITEA_USER="unizar" |
---|
9 | export VAGRANT_VAGRANTFILE="Vagrantfile-esxi" |
---|
10 | export OGN_MAC_PREFIX=$(printf '00:50:56:%02X:%02X\n' $[RANDOM%64] $[RANDOM%256]) |
---|
11 | export PATH=$PATH:/home/user/ovftool/ |
---|
12 | |
---|
13 | OGAGENT_VERSION=$(jq -r .ogagent <doc/VERSION.json) |
---|
14 | #eval $(grep DEFAULT_OGLIVE= installer/opengnsys_installer_devel_esxi.sh) |
---|
15 | DEFAULT_OGLIVE=${DEFAULT_OGLIVE// /} |
---|
16 | set -x |
---|
17 | #cd installer/vagrant |
---|
18 | cp $USER_SSK_PRIVATE_KEY installer/vagrant/config/id_rsa |
---|
19 | #cd - |
---|
20 | set +x |
---|
21 | |
---|
22 | BRANCH_EXTRA=$BRANCH |
---|
23 | EXTRA_NAME=${EXTRA_NAME// /} |
---|
24 | [[ -n $EXTRA_NAME ]] && BRANCH_EXTRA=$BRANCH-$EXTRA_NAME |
---|
25 | OGBOOT_BRANCH=${OGBOOT_BRANCH// /} |
---|
26 | export BRANCH_EXTRA |
---|
27 | export OGDHCP_BRANCH OGBOOT_BRANCH OGREPO_BRANCH OGLOG_BRANCH OGCORE_BRANCH OGGUI_BRANCH DEFAULT_OGLIVE |
---|
28 | export VAGRANT_VAGRANTFILE=installer/vagrant/Vagrantfile-esxi |
---|
29 | |
---|
30 | echo ========================= Parameters |
---|
31 | echo BRANCH=$BRANCH |
---|
32 | echo BRANCH_EXTRA=$BRANCH_EXTRA |
---|
33 | echo VM1_COMPONENTS=$VM1_COMPONENTS |
---|
34 | echo VM2_COMPONENTS=$VM2_COMPONENTS |
---|
35 | echo VM3_COMPONENTS=$VM3_COMPONENTS |
---|
36 | echo OGDHCP_BRANCH=$OGDHCP_BRANCH |
---|
37 | echo OGBOOT_BRANCH=$OGBOOT_BRANCH |
---|
38 | echo OGREPO_BRANCH=$OGREPO_BRANCH |
---|
39 | echo OGLOG_BRANCH=$OGLOG_BRANCH |
---|
40 | echo OGCORE_BRANCH=$OGCORE_BRANCH |
---|
41 | echo OGGUI_BRANCH=$OGGUI_BRANCH |
---|
42 | echo OGAGENT_VERSION=$OGAGENT_VERSION |
---|
43 | echo DEFAULT_OGLIVE=$DEFAULT_OGLIVE |
---|
44 | echo VAGRANT_VAGRANTFILE=$VAGRANT_VAGRANTFILE |
---|
45 | |
---|
46 | echo ========================= Copy artefacts from NFS |
---|
47 | [[ -d /mnt/srv/artefactos ]] || mount /mnt ## untested |
---|
48 | echo Copying /mnt/srv/artefactos/oglive/$DEFAULT_OGLIVE to installer/ |
---|
49 | cp -v /mnt/srv/artefactos/oglive/$DEFAULT_OGLIVE installer/ |
---|
50 | echo Creating installer/ogagentpkgs-${OGAGENT_VERSION}.tar.gz |
---|
51 | tar -zvcf installer/ogagentpkgs-${OGAGENT_VERSION}.tar.gz -C /mnt/srv/artefactos/ogagent ogagent_${OGAGENT_VERSION}-1_all.deb |
---|
52 | |
---|
53 | echo ========================= Setting up an ESXi network |
---|
54 | installer/vagrant/provision_esxi_net.sh $BRANCH_EXTRA |
---|
55 | |
---|
56 | echo ========================= Creating all server VMs in parallel |
---|
57 | export INSTALL_OPENGNSYS |
---|
58 | export VM1_COMPONENTS VM2_COMPONENTS VM3_COMPONENTS |
---|
59 | export DEFAULT_UDS_REST_URL DEFAULT_UDS_AUTHENTICATOR DEFAULT_UDS_USER DEFAULT_UDS_PASS |
---|
60 | export DEFAULT_OGLIVE |
---|
61 | vagrant up --no-provision |
---|
62 | |
---|
63 | echo ========================= Enumerating hostnames |
---|
64 | VMS=($(vagrant status |awk 'match ($2, /running/) { print $1 }')) |
---|
65 | echo "VMS is (${VMS[@]})" |
---|
66 | |
---|
67 | ## obtener las IPs de oglog y ogserver, y exportar las variables |
---|
68 | for 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 |
---|
86 | done |
---|
87 | |
---|
88 | for I in "${VMS[@]}"; do |
---|
89 | echo ========================= Provisioning $I |
---|
90 | env |grep DEFAULT_ |
---|
91 | vagrant provision $I 2>&1 |
---|
92 | done |
---|
93 | |
---|
94 | echo ========================= Setting up a reverse proxy in nginx |
---|
95 | for I in "${VMS[@]}"; do |
---|
96 | if [[ "$I" == *-server* ]]; then |
---|
97 | installer/vagrant/setup-proxy.sh $I $BRANCH_EXTRA |
---|
98 | break |
---|
99 | fi |
---|
100 | done |
---|
101 | rm installer/vagrant/config/id_rsa |
---|
102 | |
---|
103 | echo ========================= Terraforming clients |
---|
104 | cd installer/terraform |
---|
105 | terraform init -no-color |
---|
106 | terraform 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" |
---|