Google Cloud Platform(GCP) Creating a Project and a Compute Engine Instance with a Startup Script Attached and Auto-scaling Process

Plan of the post:

Creating a Project

Google Documentation
$gcloud projects create compute-engine-terminal

Enable Compute Engine Service API

Creating Instance

Terminal Command if you want to use the terminal

Starting Instance with Startup Script

Creating Bucket


Creating a Startup Script

#! /bin/bash#
# -x : the xtrace option can be applied to a script by invoking Bash with the -x switch. This tells Bash to show us what each statement looks like after evaluation, just before it is executed.
# -v : oposite of -x, shows each line before it is evaluated instead of after. Options can be combined and by using both -xv
# GCE startup script output shows up in "/var/log/syslog".
set -x
# noninteractive : This is the anti-frontend. It never interacts with you at all, and makes the default answers be used for all questions.
export DEBIAN_FRONTEND=noninteractive
# up to date system
# -y : Automatic yes to prompts; assume "yes" as answer to all prompts and run non-interactively
# -q : Quiet. Produces output suitable for logging, omitting progress indicators.
apt-get -yq update
apt-get -yq upgrade
# Install Google's Stackdriver logging agent
curl -sSO
# Install "stress" tool
# Run the stress command to spawn 8 workers spinning on sqrt() with a timeout of 120 seconds
apt-get -yq install stress
stress -cpu 8 -timeout 120
# Report that we're done.
# Metadata should be set in the "logs-bucket" attribute using the "gs://mybucketname/" format.
worker_log_bucket=$(curl -H "Metadata-Flavor: Google" "${log_bucket_metadata_url}")
# We write a file named after this machine.
echo "Eureka :) Work completed at $(date)" >"${worker_log_file}"
# And we copy that file to the bucket specified in the metadata.
echo "Copying the log file to the bucket..."
gsutil cp "${worker_log_file}" "${worker_log_bucket}"

Outcome of Startup Script

Last Touch: Providing the Startup Script via Cloud Storage

Auto Scaling Compute Engine Instance

Creating Instance Template and an Instance from Template

Creating Managed Instance Groups (MIG) and Setting Up Auto-Scaling


Junior Full-Stack Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store