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 = ""