Skip to content

Commit 0ea9140

Browse files
committed
More ESXi and RDO scripts
1 parent bc23387 commit 0ea9140

5 files changed

+105
-9
lines changed

deploy-rdo-vms.sh

+29-8
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ POOL_NAME=$RDO_NAME
2222
LINUX_GUEST_OS=rhel6-64
2323
HYPERV_GUEST_OS=winhyperv
2424

25-
LINUX_TEMPLATE=/vmfs/volumes/datastore1/centos-6.4-template/centos-6.4-template.vmdk
26-
HYPERV_TEMPLATE=/vmfs/volumes/datastore1/hyperv-2012-template/hyperv-2012-template.vmdk
25+
LINUX_TEMPLATE=/vmfs/volumes/datastore1/centos-6.4-template/centos-6.4-template-000001.vmdk
26+
HYPERV_TEMPLATE=/vmfs/volumes/datastore1/hyperv-2012-template/hyperv-2012-template-000001.vmdk
2727

2828
CONTROLLER_VM_NAME="$RDO_NAME"_controller
2929
NETWORK_VM_NAME="$RDO_NAME"_network
@@ -32,7 +32,7 @@ HYPERV_COMPUTE_VM_NAME="$RDO_NAME"_compute_hyperv
3232

3333
POOL_ID=`$BASEDIR/get-esxi-resource-pool-id.sh $POOL_NAME`
3434
if [ -z $POOL_ID ]; then
35-
$BASEDIR/create-esxi-resource-pool.sh $POOL_NAME
35+
$BASEDIR/create-esxi-resource-pool.sh $POOL_NAME > /dev/null
3636
fi
3737

3838
PORTGROUP_EXISTS=`$BASEDIR/check-esxi-portgroup-exists.sh "$EXT_NETWORK"`
@@ -62,10 +62,31 @@ $BASEDIR/create-esxi-vm.sh $DATASTORE $LINUX_GUEST_OS $NETWORK_VM_NAME $POOL_NAM
6262
$BASEDIR/create-esxi-vm.sh $DATASTORE $LINUX_GUEST_OS $QEMU_COMPUTE_VM_NAME $POOL_NAME 4096 2 2 30G $LINUX_TEMPLATE - - - false "$MGMT_NETWORK" "$DATA_NETWORK"
6363
$BASEDIR/create-esxi-vm.sh $DATASTORE $HYPERV_GUEST_OS $HYPERV_COMPUTE_VM_NAME $POOL_NAME 4096 2 2 60G $HYPERV_TEMPLATE - - - false "$MGMT_NETWORK" "$DATA_NETWORK"
6464

65-
#sleep 20
65+
sleep 20
6666

67-
$BASEDIR/power-on-esxi-vm.sh "$CONTROLLER_VM_NAME"
68-
$BASEDIR/power-on-esxi-vm.sh "$NETWORK_VM_NAME"
69-
$BASEDIR/power-on-esxi-vm.sh "$QEMU_COMPUTE_VM_NAME"
70-
$BASEDIR/power-on-esxi-vm.sh "$HYPERV_COMPUTE_VM_NAME"
67+
echo "Powering on $CONTROLLER_VM_NAME"
68+
$BASEDIR/power-on-esxi-vm.sh "$CONTROLLER_VM_NAME" > /dev/null
69+
echo "Powering on $NETWORK_VM_NAME"
70+
$BASEDIR/power-on-esxi-vm.sh "$NETWORK_VM_NAME" > /dev/null
71+
echo "Powering on $QEMU_COMPUTE_VM_NAME"
72+
$BASEDIR/power-on-esxi-vm.sh "$QEMU_COMPUTE_VM_NAME" > /dev/null
73+
echo "Powering on $HYPERV_COMPUTE_VM_NAME"
74+
$BASEDIR/power-on-esxi-vm.sh "$HYPERV_COMPUTE_VM_NAME" > /dev/null
75+
76+
# So far so good. Get the VM ips
77+
78+
echo "Waiting for guest IPs..."
79+
80+
INTERVAL=5
81+
MAX_WAIT=600
82+
83+
CONTROLLER_VM_IP=`$BASEDIR/get-esxi-vm-guest-ip-address-wait.sh "$CONTROLLER_VM_NAME" "$MGMT_NETWORK" true $INTERVAL $MAX_WAIT`
84+
NETWORK_VM_IP=`$BASEDIR/get-esxi-vm-guest-ip-address-wait.sh "$NETWORK_VM_NAME" "$MGMT_NETWORK" true $INTERVAL $MAX_WAIT`
85+
QEMU_COMPUTE_VM_IP=`$BASEDIR/get-esxi-vm-guest-ip-address-wait.sh "$QEMU_COMPUTE_VM_NAME" "$MGMT_NETWORK" true $INTERVAL $MAX_WAIT`
86+
HYPERV_COMPUTE_VM_IP=`$BASEDIR/get-esxi-vm-guest-ip-address-wait.sh "$HYPERV_COMPUTE_VM_NAME" "$MGMT_NETWORK" true $INTERVAL $MAX_WAIT`
87+
88+
echo "$CONTROLLER_VM_NAME":"$CONTROLLER_VM_IP"
89+
echo "$NETWORK_VM_NAME":"$NETWORK_VM_IP"
90+
echo "$QEMU_COMPUTE_VM_NAME":"$QEMU_COMPUTE_VM_IP"
91+
echo "$HYPERV_COMPUTE_VM_NAME":"$HYPERV_COMPUTE_VM_IP"
7192

get-esxi-vm-guest-ip-address-wait.sh

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/sh
2+
set -e
3+
4+
choerr() { echo "$@" 1>&2; }
5+
6+
if [ $# -ne 5 ]; then
7+
echo "Usage: $0 <vm_name> <network_name> <ipv4_only> <interval_seconds> <max_wait_seconds>"
8+
exit 1
9+
fi
10+
11+
VM_NAME=$1
12+
NETWORK_NAME=$2
13+
IPV4_ONLY=$3
14+
INTERVAL=$4
15+
MAX_WAIT=$5
16+
17+
BASEDIR=$(dirname $0)
18+
19+
COUNTER=0
20+
while [ $COUNTER -lt $MAX_WAIT ]; do
21+
IP=`$BASEDIR/get-esxi-vm-guest-ip-address.sh "$VM_NAME" "$NETWORK_NAME" $IPV4_ONLY`
22+
if [ -n "$IP" ]; then
23+
echo $IP | sed 's/\ /\n/g'
24+
exit 0
25+
fi
26+
sleep $INTERVAL
27+
let COUNTER=COUNTER+$INTERVAL
28+
done
29+
30+
echoerr "It was not possible to retrieve the guest IP addresses for VM $VM_NAME in $MAX_WAIT seconds"
31+
exit 1
32+

get-esxi-vm-guest-ip-address.sh

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/sh
2+
set -e
3+
4+
if [ $# -ne 3 ]; then
5+
echo "Usage: $0 <vm_name> <network_name> <ipv4_only>"
6+
exit 1
7+
fi
8+
9+
VM_NAME=$1
10+
NETWORK_NAME=$2
11+
IPV4_ONLY=$3
12+
13+
BASEDIR=$(dirname $0)
14+
15+
VMID=`$BASEDIR/get-esxi-vm-id.sh "$VM_NAME"`
16+
IPS=`vim-cmd vmsvc/get.guest $VMID | sed -rn '/network = "'"$NETWORK_NAME"'",/{N;N;N;s/network = "'"$NETWORK_NAME"'",\ +\n\ +ipAddress = \(string\) \[\n\ +"([a-f0-9:\.]+)"/\0/p}' | sed -rn 's/\ +"([a-f0-9\:\.]+)"(,)?/\1/p'`
17+
18+
if [ "$IPV4_ONLY" == "true" ]; then
19+
IPS=`echo $IPS | sed 's/\ /\n/g' | sed -rn 's/([0-9]+\.[0-9]+\.[0-9]+\.[0-9])/\1/p'`
20+
fi
21+
echo $IPS | sed 's/\ /\n/g'
22+

get-esxi-vm-id.sh

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
#!/bin/sh
22
set -e
33

4+
echoerr() { echo "$@" 1>&2; }
5+
46
if [ $# -ne 1 ]; then
57
echo "Usage: $0 <vm_name>"
68
exit 1
79
fi
810

911
VM_NAME=$1
1012

11-
/bin/vim-cmd vmsvc/getallvms | awk -vvmname="$VM_NAME" '{if ($2 == vmname) print $1}'
13+
VMID=`/bin/vim-cmd vmsvc/getallvms | awk -vvmname="$VM_NAME" '{if ($2 == vmname) print $1}'`
14+
15+
if [ -z "$VMID" ]; then
16+
echoerr "VM not found: $VM_NAME"
17+
exit 1
18+
fi
19+
20+
echo $VMID
1221

sshpass.sh

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
SSHUSER=$1
2+
IP=$2
3+
PWD=$3
4+
ARGS=$4
5+
6+
/usr/bin/expect <<EOD
7+
spawn ssh -oStrictHostKeyChecking=no $SSHUSER@$IP "$ARGS"
8+
expect "password"
9+
send "$PWD\n"
10+
expect eof
11+
EOD
12+

0 commit comments

Comments
 (0)