github.phpd.cn/hashicorp/packer@v1.3.2/builder/googlecompute/startup.go (about) 1 package googlecompute 2 3 import ( 4 "fmt" 5 ) 6 7 const StartupScriptKey string = "startup-script" 8 const StartupScriptStatusKey string = "startup-script-status" 9 const StartupWrappedScriptKey string = "packer-wrapped-startup-script" 10 11 const StartupScriptStatusDone string = "done" 12 const StartupScriptStatusError string = "error" 13 const StartupScriptStatusNotDone string = "notdone" 14 15 var StartupScriptLinux string = fmt.Sprintf(`#!/usr/bin/env bash 16 echo "Packer startup script starting." 17 RETVAL=0 18 BASEMETADATAURL=http://metadata/computeMetadata/v1/instance/ 19 20 GetMetadata () { 21 echo "$(curl -f -H "Metadata-Flavor: Google" ${BASEMETADATAURL}/${1} 2> /dev/null)" 22 } 23 24 ZONE=$(basename $(GetMetadata zone)) 25 26 SetMetadata () { 27 gcloud compute instances add-metadata ${HOSTNAME} --metadata ${1}=${2} --zone ${ZONE} 28 } 29 30 STARTUPSCRIPT=$(GetMetadata attributes/%s) 31 STARTUPSCRIPTPATH=/packer-wrapped-startup-script 32 if [ -f "/var/log/startupscript.log" ]; then 33 STARTUPSCRIPTLOGPATH=/var/log/startupscript.log 34 else 35 STARTUPSCRIPTLOGPATH=/var/log/daemon.log 36 fi 37 STARTUPSCRIPTLOGDEST=$(GetMetadata attributes/startup-script-log-dest) 38 39 if [[ ! -z $STARTUPSCRIPT ]]; then 40 echo "Executing user-provided startup script..." 41 echo "${STARTUPSCRIPT}" > ${STARTUPSCRIPTPATH} 42 chmod +x ${STARTUPSCRIPTPATH} 43 ${STARTUPSCRIPTPATH} 44 RETVAL=$? 45 46 if [[ ! -z $STARTUPSCRIPTLOGDEST ]]; then 47 echo "Uploading user-provided startup script log to ${STARTUPSCRIPTLOGDEST}..." 48 gsutil -h "Content-Type:text/plain" cp ${STARTUPSCRIPTLOGPATH} ${STARTUPSCRIPTLOGDEST} 49 fi 50 51 rm ${STARTUPSCRIPTPATH} 52 fi 53 54 echo "Packer startup script done." 55 SetMetadata %s %s 56 exit $RETVAL 57 `, StartupWrappedScriptKey, StartupScriptStatusKey, StartupScriptStatusDone) 58 59 var StartupScriptWindows string = ""