GCP PlayCloud Labs
-
GCP PlayCloud Labs
-
Guided Lab: How to Launch a GCP Compute Engine Linux Instance
-
Guided Lab: Creating a VM Using Instance Templates
-
Guided Lab: Creating and Managing Instance Groups in Compute Engine
-
Guided Lab: Creating a Spot VM Instance
-
Guided Lab: Configuring Shielded VM Options
-
Guided Lab: Exploring Instance Metadata in Google Cloud
-
Guided Lab: Vertically Scaling a VM Instance
-
Guided Lab: Setting up a Web Server on a VM Instance
-
Guided Lab: Using Startup Scripts in GCP VM Instances
-
Guided Lab: Creating a Custom Image from a VM Instance with Web Server in Google Cloud
-
Guided Lab: Creating VM Snapshots and Restoring a VM from a Snapshot
-
Guided Lab: Setting Up and Managing a Database on a VM Instance
-
Guided Lab: Installing WordPress on an Ubuntu VM Instance with LEMP Stack
-
Guided Lab: Deploying a LAMP Stack on a Compute Engine VM
-
Guided Lab: Reserving or Promoting a Static IP Address for a VM Instance
-
Guided Lab: SSH Access to GCP VM Instance from Local Machine using SSH Key Pair
-
Guided Lab: Guarding Your VM with Deletion Protection
-
Guided Lab: Setting Up a Linux Bastion Host on GCP
-
Guided Lab: Creating a Cloud Storage Bucket
-
Guided Lab: Uploading, Organizing, and Managing Objects in Cloud Storage
-
Guided Lab: Exploring Google Cloud Storage Classes
-
Guided Lab: Hosting a Static Website in Google Cloud Storage Bucket
-
Guided Lab: Protecting Data on Cloud Storage Bucket Against Accidental Delete and Overwrite Using Object Versioning
-
Guided Lab: Using Cloud Storage Lifecycle Rules to Automate Object Management
-
Guided Lab: Managing Cloud Storage Buckets via SSH Commands
-
Guided Lab: Creating a Cloud SQL Instance
-
Guided Lab: Running SQL Commands in Cloud SQL Studio
-
Guided Lab: Creating and Restoring Cloud SQL Backups
-
Guided Lab: Integrating Cloud SQL Database instance with a VM instance
-
Guided Lab: Connecting Cloud SQL Database with MySQL Workbench (Local)
-
Guided Lab: Guarding Your Cloud SQL Instances with Deletion Protection
-
Guided Lab: Creating a Cloud NAT Gateway
-
Guided Lab: Creating a Google Kubernetes Engine (GKE) Cluster
-
Guided Lab: Connecting to a Kubernetes Engine Cluster
-
Guided Lab: Deploying a Simple Web Application on GKE
-
Guided Lab: Creating a Custom Virtual Private Cloud (VPC)
-
Guided Lab: Establishing VPC Peering for Secure Cross‑Network Communication
-
Guided Lab: Configuring Firewall Rules to Secure and Access a VM
-
Guided Lab: Creating an Application Load Balancer
-
Guided Lab: Creating a Network Load Balancer
Guided Lab: Using Startup Scripts in GCP VM Instances
Description
A startup script is a file that executes tasks when a virtual machine (VM) instance boots. It can be applied either to all VMs within a project or to a specific VM. If both project‑level and VM‑level scripts are defined, the VM‑level script takes precedence. Startup scripts run only when network connectivity is available.
In this lab, you will learn how to configure a Google Cloud Platform (GCP) VM instance to automatically run a startup script upon boot. The script will install and configure Nginx, serve a custom HTML page, and apply a basic server configuration.
Prerequisites
To ensure the successful completion of this lab, you must have prior experience in creating VM instances and be familiar with their essential components. If you feel that your knowledge in this area is insufficient, we highly recommend taking this lab to gain the necessary understanding:
Objectives
In this lab, you will:
- Launch a Compute Engine VM instance with a custom startup script.
- Automatically install and configure Nginx.
- Serve a custom HTML page via HTTP.
- Verify the deployment using the VM’s external IP address.
- Inspect the VM’s metadata to confirm that the startup script is correctly applied.
Lab Steps
Create a Compute Engine VM Instance
1. Create a VM instance using the following machine configurations:
- Name: Enter your desired instance name.
- Machine type: Choose e2-micro (Preset)

2. Under OS and storage, click the Change button to modify the Boot disk:
- Operating System: Ubuntu
- Version: 24.04 LTS Minimal (x86/64, amd64 noble minimal image built on 2025‑12‑17)
- Click Select once done.

3. Under Network → Firewall, check:
- Allow HTTP traffic

4. Navigate to the Advanced section.
5. In the Startup script field, paste the following script:
# Update system
sudo apt update -y
# Install Nginx
sudo apt install nginx -y
# Start Nginx
sudo systemctl start nginx
# Create a custom HTML page in the HTML directory
echo '<h1>Welcome to my web page!</h1>' | sudo tee /usr/share/nginx/html/mypage.html > /dev/null
# Add the configuration directly
echo 'server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
index mypage.html;
}
}' | sudo tee /etc/nginx/conf.d/server.conf > /dev/null
# Remove the default site to avoid duplicate default_server errors:
sudo unlink /etc/nginx/sites-enabled/default
# Test and Reload Nginx for the changes to take effect
sudo nginx -t && sudo service nginx reload
# Enable Nginx at boot
sudo systemctl enable nginx

6. Leave other configurations at their default values.
7. Once done, click the Create button.
Wait for the VM to finish provisioning.
Verify the Setup
1. Once the VM is running, copy its External IP address.

2. Open a browser and navigate to http://<EXTERNAL_IP>.
3. You should see the custom page: “Welcome to my web page!”

If the page does not load:
- Refresh the browser.
- Ensure the firewall rule Allow HTTP traffic is enabled.
- SSH into the VM and run:
systemctl status nginxto confirm Nginx is running.
Verify the Startup Script via Metadata
1. Connect to your VM using SSH from the Cloud Console.
2. Run the following command to retrieve the startup script stored in the VM’s metadata:
curl -H "Metadata-Flavor: Google" \
http://metadata.google.internal/computeMetadata/v1/instance/attributes/startup-script

Congratulations! You have automated the setup of a VM with a startup script, seamlessly installed and configured Nginx, and deployed a custom HTML page over HTTP. This exercise highlights how startup scripts can simplify server provisioning in GCP by ensuring services are installed, configured, and ready to run the moment your instance boots.