Bird
Raised Fist0
GCPcloud~10 mins

Creating a VM instance in GCP - Visual Walkthrough

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Process Flow - Creating a VM instance
Start
Choose VM specs
Configure network & disk
Run creation command
VM instance created
Access VM or manage
End
This flow shows the steps to create a VM instance: choose specs, configure settings, run the command, then access the VM.
Execution Sample
GCP
gcloud compute instances create my-vm \
  --zone=us-central1-a \
  --machine-type=e2-medium \
  --image-family=debian-11 \
  --image-project=debian-cloud
This command creates a VM named 'my-vm' in the specified zone with a medium machine type and Debian 11 image.
Process Table
StepActionInput/CommandResultNotes
1Choose VM name and zoneName: my-vm, Zone: us-central1-aVM name and zone setPreparing VM details
2Select machine typee2-mediumMachine type setDefines CPU and memory
3Select OS imageDebian 11 from debian-cloudImage selectedOS for VM
4Run creation commandgcloud compute instances create my-vm --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloudVM instance creation startedCommand sent to GCP
5GCP processes requestN/AVM instance created successfullyVM ready to use
6Access VMgcloud compute ssh my-vm --zone=us-central1-aConnected to VMSSH access established
7EndN/AProcess completeVM ready for tasks
💡 VM instance created and accessible via SSH, process complete.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5Final
VM NameNonemy-vmmy-vmmy-vmmy-vmmy-vmmy-vm
ZoneNoneus-central1-aus-central1-aus-central1-aus-central1-aus-central1-aus-central1-a
Machine TypeNoneNonee2-mediume2-mediume2-mediume2-mediume2-medium
ImageNoneNoneNoneDebian 11Debian 11Debian 11Debian 11
VM StatusNot createdNot createdNot createdNot createdCreatingRunningRunning
Key Moments - 3 Insights
Why do we specify the zone before creating the VM?
The zone tells GCP where to place the VM physically. Without it, GCP cannot know where to create the VM. See execution_table step 1.
What happens if the machine type is not specified?
GCP uses a default machine type, which might not fit your needs. Specifying it ensures the VM has the right CPU and memory. See execution_table step 2.
Why do we need to specify the image family and project?
This tells GCP which operating system to install on the VM. Without it, the VM won't have an OS to run. See execution_table step 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the VM status after step 4?
ARunning
BNot created
CCreating
DDeleted
💡 Hint
Check the 'VM Status' variable in variable_tracker after step 4.
At which step does the VM become accessible via SSH?
AStep 6
BStep 5
CStep 3
DStep 7
💡 Hint
Look at the 'Action' and 'Result' columns in execution_table for SSH access.
If you change the machine type to 'e2-small', which step in the execution_table changes?
AStep 1
BStep 2
CStep 4
DStep 6
💡 Hint
Machine type is set in step 2 according to execution_table.
Concept Snapshot
Creating a VM instance in GCP:
- Use 'gcloud compute instances create' command
- Specify VM name and zone
- Choose machine type (CPU & memory)
- Select OS image family and project
- Run command to create VM
- Access VM via SSH after creation
Full Transcript
To create a VM instance in Google Cloud Platform, you start by choosing a name and zone where the VM will live. Then, select the machine type which defines the CPU and memory size. Next, pick the operating system image by specifying the image family and project. Run the 'gcloud compute instances create' command with these details. GCP processes the request and creates the VM. Once created, you can connect to the VM using SSH. This process ensures your VM is ready to run your applications.

Practice

(1/5)
1. What does creating a VM instance in Google Cloud allow you to do?
easy
A. Create a database
B. Store files permanently
C. Run a virtual computer in the cloud
D. Send emails automatically

Solution

  1. Step 1: Understand VM instance purpose

    A VM instance is a virtual machine, like a computer inside the cloud.
  2. Step 2: Identify correct function

    Running a virtual computer matches the VM instance role, unlike storing files or sending emails.
  3. Final Answer:

    Run a virtual computer in the cloud -> Option C
  4. Quick Check:

    VM instance = virtual computer [OK]
Hint: VM means virtual machine, a computer in the cloud [OK]
Common Mistakes:
  • Confusing VM with storage service
  • Thinking VM creates databases directly
  • Assuming VM sends emails automatically
2. Which command correctly creates a VM instance named my-vm in zone us-central1-a with machine type e2-medium and image debian-11?
easy
A. gcloud create vm my-vm --zone us-central1-a --type e2-medium --image debian-11
B. gcloud compute vm create my-vm --zone=us-central1-a --machine-type=e2-medium --image debian-11
C. gcloud instances create --name my-vm --zone us-central1-a --machine e2-medium --image debian-11
D. gcloud compute instances create my-vm --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud

Solution

  1. Step 1: Check correct command structure

    The correct command starts with 'gcloud compute instances create' followed by the instance name.
  2. Step 2: Verify flags and parameters

    Flags like '--zone', '--machine-type', '--image-family', and '--image-project' must be exact and use '=' sign.
  3. Final Answer:

    gcloud compute instances create my-vm --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud -> Option D
  4. Quick Check:

    Correct gcloud syntax = gcloud compute instances create my-vm --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud [OK]
Hint: Use 'gcloud compute instances create' with exact flags [OK]
Common Mistakes:
  • Using wrong command verbs like 'create vm'
  • Missing '=' in flags
  • Wrong flag names like '--machine' instead of '--machine-type'
3. What will happen if you run this command?
gcloud compute instances create test-vm --zone=us-east1-b --machine-type=n1-standard-1 --image-family=ubuntu-2004-lts --image-project=ubuntu-os-cloud
medium
A. The command will fail due to missing machine type
B. A VM named test-vm will be created in zone us-east1-b with Ubuntu 20.04 OS
C. A VM will be created but with default image, not Ubuntu
D. The VM will be created in the wrong zone

Solution

  1. Step 1: Analyze command parameters

    The command specifies instance name, zone, machine type, image family, and image project correctly.
  2. Step 2: Understand image selection

    Using '--image-family=ubuntu-2004-lts' with '--image-project=ubuntu-os-cloud' selects Ubuntu 20.04 LTS image.
  3. Final Answer:

    A VM named test-vm will be created in zone us-east1-b with Ubuntu 20.04 OS -> Option B
  4. Quick Check:

    Correct flags create VM with specified OS [OK]
Hint: Image family + project picks correct OS image [OK]
Common Mistakes:
  • Confusing image-family with image name
  • Omitting image-project causes errors
  • Wrong zone spelling
4. You tried to create a VM with:
gcloud compute instances create vm1 --zone=us-west1-c --machine-type=e2-small --image=debian-10

The command failed with an error about the image. What is the likely cause?
medium
A. The image name 'debian-10' is incorrect or deprecated
B. The zone 'us-west1-c' does not exist
C. The machine type 'e2-small' is invalid
D. You forgot to specify the project

Solution

  1. Step 1: Check image parameter validity

    Using '--image=debian-10' is often invalid because images require full name or image family with project.
  2. Step 2: Understand error cause

    Image errors usually mean the image name is wrong or deprecated, not zone or machine type.
  3. Final Answer:

    The image name 'debian-10' is incorrect or deprecated -> Option A
  4. Quick Check:

    Image errors = wrong image name [OK]
Hint: Use image family and project, not just image name [OK]
Common Mistakes:
  • Assuming zone or machine type caused image error
  • Not specifying image project with image family
  • Using outdated image names
5. You want to create a VM instance that automatically allows HTTP traffic and uses a custom startup script to install software. Which command correctly achieves this?
hard
A. gcloud compute instances create web-vm --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --tags=http-server --metadata=startup-script='sudo apt-get update && sudo apt-get install -y nginx'
B. gcloud compute instances create web-vm --zone=us-central1-a --machine-type=e2-medium --image=debian-11 --allow-http --script='install nginx'
C. gcloud compute instances create web-vm --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --firewall=http --startup='apt-get install nginx'
D. gcloud compute instances create web-vm --zone=us-central1-a --machine-type=e2-medium --image=debian-11 --http --metadata=startup='install nginx'

Solution

  1. Step 1: Enable HTTP traffic with tags

    Using '--tags=http-server' allows HTTP traffic via firewall rules.
  2. Step 2: Add startup script correctly

    '--metadata=startup-script=' followed by the script installs nginx on startup.
  3. Step 3: Verify image and machine type

    Using '--image-family=debian-11' and '--image-project=debian-cloud' is correct for Debian 11.
  4. Final Answer:

    gcloud compute instances create web-vm --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --tags=http-server --metadata=startup-script='sudo apt-get update && sudo apt-get install -y nginx' -> Option A
  5. Quick Check:

    Tags + metadata=startup-script = correct setup [OK]
Hint: Use --tags for HTTP and --metadata for startup script [OK]
Common Mistakes:
  • Using wrong flags like --allow-http or --http
  • Incorrect metadata key name
  • Not specifying image project with image family