172 lines
5.7 KiB
Bash
172 lines
5.7 KiB
Bash
#!/bin/bash
|
|
|
|
# vcd15-install Install vCloud Director 1.5 for AutoLab v1.1
|
|
#
|
|
# vCloud Director Installation Script
|
|
# William Lam
|
|
# www.virtuallyghetto.com
|
|
#
|
|
# Damian Karlson
|
|
# www.damiankarlson.com
|
|
# www.labguides.com
|
|
# www.professionalvmware.com/brownbags
|
|
#
|
|
# chkconfig: 3 99 99
|
|
# description: Automated vCloud Director installation on AutoLab
|
|
|
|
####################
|
|
# FILE DEFINITIONS #
|
|
####################
|
|
# vCloud Director 1.5.x
|
|
VMWARE_VCD_BIN=`find /root/vmware-vcloud-director-1.5*.bin`
|
|
VCLOUD_VERSION=1.5.x
|
|
|
|
#####################
|
|
# SECOND IP ADDRESS #
|
|
#####################
|
|
IP_ADDRESS_2=192.168.199.39
|
|
IP_ADDRESS_2_NETMASK=255.255.255.0
|
|
|
|
#################
|
|
# KEYSTORE INFO #
|
|
#################
|
|
KEYSTORE_PASSWORD=vcloud
|
|
KEYSTORE_ORG_UNIT_NAME=AutoLab
|
|
KEYSTORE_ORG=AutoLab
|
|
KEYSTORE_CITY=AutoLab
|
|
KEYSTORE_STATE=AutoLab
|
|
KEYSTORE_COUNTRY=US
|
|
|
|
################################
|
|
# SQL 2008 R2 SP1 EXPRESS CONF #
|
|
################################
|
|
SQL_VCLOUD_USERNAME=vcloud15
|
|
SQL_VCLOUD_PASSWORD=VMware1!
|
|
SQL_VCLOUD_DATABASE=vCloud15
|
|
|
|
verify() {
|
|
if [ ${UID} -ne 0 ]; then
|
|
echo "Installer must run as root!" >> /root/vcd15-install.log
|
|
exit 1
|
|
fi
|
|
if [ ! -f ${VMWARE_VCD_BIN} ]; then
|
|
echo "Unable to find ${VMWARE_VCD_BIN}!" >> /root/vcd15-install.log
|
|
exit 1
|
|
fi
|
|
|
|
echo "Proceeding with the installation of VMware vCD ${VCLOUD_VERSION}" >> /root/vcd15-install.log
|
|
}
|
|
|
|
generateCertificates() {
|
|
HTTP_IP=$(grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F "=" '{print $2}' | sed 's/"//g')
|
|
CONSOLEPROXY_IP=$(grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth1 | awk -F "=" '{print $2}' | sed 's/"//g')
|
|
HTTP_HOSTNAME=$(host ${HTTP_IP} | awk '{print $5}' | sed 's/.$//g')
|
|
CONSOLEPROXY_HOSTNAME=$(host ${CONSOLEPROXY_IP} | awk '{print $5}' | sed 's/.$//g')
|
|
|
|
if [ ! -f /opt/keystore/certificates.ks ]; then
|
|
echo "Creating keystore certificate for http using ${HTTP_HOSTNAME}" >> /root/vcd15-install.log
|
|
keytool -keystore certificates.ks -storetype JCEKS -storepass ${KEYSTORE_PASSWORD} -keypass ${KEYSTORE_PASSWORD} -genkey -keyalg RSA -alias http -dname "CN=${HTTP_HOSTNAME}, OU=${KEYSTORE_ORG_UNIT_NAME}, O=${KEYSTORE_ORG}, L=${KEYSTORE_CITY},S=${KEYSTORE_STATE}, C=${KEYSTORE_COUNTRY}" 2>&1 >> /root/vcd15-install.log
|
|
keytool -keystore certificates.ks -storetype JCEKS -storepass ${KEYSTORE_PASSWORD} -keypass ${KEYSTORE_PASSWORD} -certreq -alias http -file http.csr 2>&1 >> /root/vcd15-install.log
|
|
|
|
echo "Creating keystore certificate for consoleproxy using ${CONSOLEPROXY_HOSTNAME}" >> /root/vcd15-install.log
|
|
keytool -keystore certificates.ks -storetype JCEKS -storepass ${KEYSTORE_PASSWORD} -keypass ${KEYSTORE_PASSWORD} -genkey -keyalg RSA -alias consoleproxy -dname "CN=${HTTP_HOSTNAME}, OU=${KEYSTORE_ORG_UNIT_NAME}, O=${KEYSTORE_ORG}, L=${KEYSTORE_CITY},S=${KEYSTORE_STATE}, C=${KEYSTORE_COUNTRY}" 2>&1 >> /root/vcd15-install.log
|
|
keytool -keystore certificates.ks -storetype JCEKS -storepass ${KEYSTORE_PASSWORD} -keypass ${KEYSTORE_PASSWORD} -certreq -alias consoleproxy -file consoleproxy.csr 2>&1 >> /root/vcd15-install.log
|
|
|
|
echo "Moving certificates.ks to /opt/keystore" >> /root/vcd15-install.log
|
|
if [ -f certificates.ks ]; then
|
|
mkdir -p /opt/keystore
|
|
mv certificates.ks /opt/keystore
|
|
else
|
|
echo "Error! Unable to locate certificates.ks in current working directory, certificates may not have been generated correctly!" >> /root/vcd15-install.log
|
|
fi
|
|
else
|
|
echo "Looks like /opt/keystore/certificates.ks exists already! Will not generate vCD keystores!" >> /root/vcd15-install.log
|
|
fi
|
|
}
|
|
|
|
installvCD() {
|
|
VCD_INSTALL_RESPONSE_FILE=/tmp/vcd15-install-$$.response
|
|
|
|
rpm -qa | grep -i "vmware-vcloud-director" > /dev/null 2>&1
|
|
if [ $? -eq 1 ]; then
|
|
echo "Installing VMware vCloud Director ${VCLOUD_VERSION}" >> /root/vcd15-install.log
|
|
cat > ${VCD_INSTALL_RESPONSE_FILE} << __VCD_INSTALL__
|
|
y
|
|
n
|
|
__VCD_INSTALL__
|
|
|
|
chmod u+x ${VMWARE_VCD_BIN}
|
|
${VMWARE_VCD_BIN} < ${VCD_INSTALL_RESPONSE_FILE} 2>&1 >> /root/vcd15-install.log
|
|
|
|
rm -f ${VCD_INSTALL_RESPONSE_FILE}
|
|
else
|
|
echo "VMware vCloud Director ${VCLOUD_VERSION} is already installed!" >> /root/vcd15-install.log
|
|
fi
|
|
}
|
|
|
|
configurevCD() {
|
|
VCD_CONFIG_RESPONSE_FILE=/tmp/vcd-configure-$$.response
|
|
VCD_PATH=/opt/vmware/vcloud-director
|
|
|
|
cat > ${VCD_CONFIG_RESPONSE_FILE} << __VCD_CONFIGURE__
|
|
1
|
|
1
|
|
/opt/keystore/certificates.ks
|
|
${KEYSTORE_PASSWORD}
|
|
|
|
2
|
|
192.168.199.4
|
|
1433
|
|
${SQL_VCLOUD_DATABASE}
|
|
|
|
${SQL_VCLOUD_USERNAME}
|
|
${SQL_VCLOUD_PASSWORD}
|
|
y
|
|
__VCD_CONFIGURE__
|
|
|
|
service vmware-vcd status > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
service vmware-vcd stop
|
|
fi
|
|
echo "Configuring vCloud Director" >> /root/vcd15-install.log
|
|
${VCD_PATH}/bin/configure < ${VCD_CONFIG_RESPONSE_FILE}
|
|
|
|
rm -f ${VCD_CONFIG_RESPONSE_FILE}
|
|
|
|
echo "Completed installation of vCloud Director!" >> /root/vcd15-install.log
|
|
echo "Starting vCloud Director" >> /root/vcd15-install.log
|
|
${VCD_PATH}/bin/vmware-vcd start
|
|
echo "Waiting for vCloud Director to finish initialization" >> /root/vcd15-install.log
|
|
VCD_START_SUCCESS=0
|
|
VCD_START_COUNT=0
|
|
VCD_START_MAX_COUNT=24
|
|
while [ 1 ];
|
|
do
|
|
grep -i "Application Initialization: Complete" ${VCD_PATH}/logs/vcloud-container-info.log > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo "vCloud Director is up and running! You can now go to https://${HTTP_HOSTNAME}" >> /root/vcd15-install.log
|
|
break
|
|
else
|
|
if [ ${VCD_START_COUNT} = ${VCD_START_MAX_COUNT} ]; then
|
|
echo "Unable to start vCloud Director, something went wrong! Please take a look at ${VCD_PATH}/logs/vcloud-container-info.log for more info" >> /root/vcd15-install.log
|
|
break
|
|
fi
|
|
VCD_START_COUNT=$((VCD_START_COUNT+1))
|
|
sleep 5
|
|
fi
|
|
done
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
verify
|
|
generateCertificates
|
|
installvCD
|
|
configurevCD
|
|
chkconfig vcd15-install off
|
|
;;
|
|
stop|status|restart|reload|force-reload)
|
|
# do nothing
|
|
;;
|
|
esac
|
|
exit |