forked from schadr/photon-controller
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprepare-devbox-deployment.sh
executable file
·80 lines (61 loc) · 2.65 KB
/
prepare-devbox-deployment.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash -xe
MANAGEMENT_VM_DIR="./management-vm"
EXPORTED_OVA_FILE="exported-photon-management-vm.ova"
OUTPUT_OVF_FILE="photon-management-vm.ovf"
rm -rf "$MANAGEMENT_VM_DIR"
mkdir -p "$MANAGEMENT_VM_DIR"
ovftool=${OVFTOOL_FULL_PATH:="$(which ovftool)"}
if [ ! -f "$ovftool" ]; then
echo "ERROR: ovftool not found"
exit -1
fi
export NO_RESTART_ALWAYS=1
./gradlew :devbox:renewPhoton
vagrant ssh -c "docker tag photon/haproxy esxcloud/haproxy"
vagrant ssh -c "docker tag photon/photon-controller-core esxcloud/photon-controller-core"
mgmt_ui_container_url="https://ci.ec.eng.vmware.com/view/UI/job/ec-ui-mgmt-publish-docker-image-develop/lastSuccessfulBuild/artifact/ci/docker-image/esxcloud-management-ui.tar"
container_tar=$(basename "$mgmt_ui_container_url")
vagrant ssh -c "wget -N -nv --no-proxy --no-check-certificate \"$mgmt_ui_container_url\""
vagrant ssh -c "docker load -i \"$container_tar\""
vagrant ssh -c "rm -f \"$container_tar\""
#
# Copy the config files and scripts
#
vagrant ssh -c "sudo docker cp photon-controller-core:/etc/esxcloud-deployer/ /etc/"
vagrant ssh -c "sudo mkdir -p /usr/lib/esxcloud/photon-controller-core/"
vagrant ssh -c "sudo docker cp photon-controller-core:/usr/lib/esxcloud/photon-controller-core/scripts/ /usr/lib/esxcloud/photon-controller-core/"
photon_vm=$(VBoxManage list runningvms | grep devbox-photon_photon | sed 's/"\(.*\)".*/\1/')
# removing all docker containers in the vagrant box
#
# \ . ./
# \ .:";'.:.." /
# (M^^.^~~:.'").
# - (/ . . . \ \) -
# O ((| :. ~ ^ :. .|))
# |\\ - (\- | \ / | /) -
# | T -\ \ / /-
# / \[_]..........................\ \ / /
vagrant ssh -c 'docker stop $(docker ps -a -q)'
vagrant ssh -c 'docker rm $(docker ps -a -q)'
#
# Sleep for the docker operations to complete
# this should be the last thing to run before the vagrant suspend command
#
echo "sleeping for 2 minutes to let docker operations complete..."
sleep 120
vagrant suspend
VBoxManage export "$photon_vm" -o "../$EXPORTED_OVA_FILE"
mv "../$EXPORTED_OVA_FILE" "$MANAGEMENT_VM_DIR/"
cd $MANAGEMENT_VM_DIR
# Extract vmdk
"$ovftool" --lax $EXPORTED_OVA_FILE $OUTPUT_OVF_FILE
# Remove unused files
rm -f -- *.ova
rm -f -- *.ovf
rm -f -- *.mf
cd ..
./gradlew :devbox:renewPhoton
vagrant ssh -c "sudo mkdir -p /var/photon/images"
vagrant ssh -c "sudo chown vagrant /var/photon/images"
vagrant ssh -c "sudo cp /vagrant/$MANAGEMENT_VM_DIR/photon-management-vm-disk1.vmdk /var/photon/images/"
echo "Devbox is ready for deployment"