Bird
Raised Fist0
GCPcloud~5 mins

Instance templates in GCP - Commands & Configuration

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
Introduction
When you want to create many virtual machines with the same settings, instance templates help by saving those settings in one place. This makes it easy to launch new machines quickly without repeating the setup steps.
When you need to launch multiple virtual machines with identical configurations.
When you want to create a managed group of virtual machines that can scale automatically.
When you want to update the machine setup and apply it to new machines easily.
When you want to keep your virtual machine setup consistent across your project.
When you want to save time by not configuring each virtual machine manually.
Config File - instance-template.yaml
instance-template.yaml
apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeInstanceTemplate
metadata:
  name: example-instance-template
spec:
  machineType: e2-medium
  disks:
    - autoDelete: true
      boot: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-11
  networkInterfaces:
    - network: default
      accessConfigs:
        - name: External NAT
          type: ONE_TO_ONE_NAT
  tags:
    items:
      - http-server
      - https-server
  metadata:
    items:
      - key: startup-script
        value: |
          #!/bin/bash
          echo Hello, world! > /var/log/startup-script.log

This file defines an instance template named example-instance-template. It sets the machine type to e2-medium, uses a Debian 11 image for the boot disk, and attaches the default network with an external IP. It also adds tags for HTTP and HTTPS servers and includes a startup script that writes a message to a log file.

Commands
This command creates an instance template named 'example-instance-template' with the specified machine type, image, network tags, and a startup script. It saves the configuration for future virtual machine creation.
Terminal
gcloud compute instance-templates create example-instance-template --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --tags=http-server,https-server --metadata=startup-script='#!/bin/bash\necho Hello, world! > /var/log/startup-script.log'
Expected OutputExpected
Created [https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/example-instance-template].
--machine-type - Sets the type of virtual machine to use.
--image-family - Specifies the OS image family for the boot disk.
--metadata - Adds startup scripts or other metadata to the instance.
This command lists all instance templates in your project so you can verify that your template was created successfully.
Terminal
gcloud compute instance-templates list
Expected OutputExpected
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP example-instance-template e2-medium False 2024-06-01T12:00:00.000-07:00
This command creates a new virtual machine named 'example-instance-1' using the settings saved in the 'example-instance-template'.
Terminal
gcloud compute instances create example-instance-1 --source-instance-template=example-instance-template
Expected OutputExpected
Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/example-instance-1].
--source-instance-template - Specifies which instance template to use for creating the VM.
This command lists all virtual machines in your project so you can check that your new instance is running.
Terminal
gcloud compute instances list
Expected OutputExpected
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS example-instance-1 us-central1-a e2-medium False 10.128.0.5 34.68.123.45 RUNNING
Key Concept

If you remember nothing else from this pattern, remember: instance templates save your virtual machine setup so you can create many identical machines quickly and easily.

Common Mistakes
Trying to create a VM without specifying the instance template name correctly.
The VM creation fails because it cannot find the template to copy the settings from.
Use the exact instance template name with the --source-instance-template flag when creating the VM.
Not including a startup script or metadata when needed.
The VM might not perform necessary setup tasks automatically after launch.
Add startup scripts or metadata using the --metadata flag in the instance template creation.
Forgetting to check the list of instance templates after creation.
You might think the template was created when it was not, leading to errors later.
Always run 'gcloud compute instance-templates list' to confirm your template exists.
Summary
Create an instance template to save VM settings with 'gcloud compute instance-templates create'.
List templates with 'gcloud compute instance-templates list' to verify creation.
Create VMs from the template using 'gcloud compute instances create --source-instance-template'.
List running VMs with 'gcloud compute instances list' to check your instances.

Practice

(1/5)
1. What is the main purpose of an instance template in Google Cloud Platform?
easy
A. To store data permanently for virtual machines
B. To manage user access to virtual machines
C. To monitor the performance of virtual machines
D. To save VM configuration settings for creating identical instances quickly

Solution

  1. Step 1: Understand what instance templates store

    Instance templates save the configuration details like machine type, disk image, and network settings.
  2. Step 2: Identify their main use

    They allow quick creation of many identical VM instances without repeating setup.
  3. Final Answer:

    To save VM configuration settings for creating identical instances quickly -> Option D
  4. Quick Check:

    Instance templates = VM settings saved [OK]
Hint: Instance templates store VM setup for easy reuse [OK]
Common Mistakes:
  • Confusing instance templates with storage or monitoring
  • Thinking instance templates manage user permissions
  • Assuming instance templates hold data permanently
2. Which of the following is the correct gcloud command to create an instance template named web-template with machine type e2-medium?
easy
A. gcloud compute instance-templates new web-template --type=e2-medium
B. gcloud compute instance-templates create web-template --machine-type=e2-medium
C. gcloud compute instances create web-template --machine-type=e2-medium
D. gcloud create instance-template web-template --machine e2-medium

Solution

  1. Step 1: Identify the correct gcloud command for instance templates

    The command to create instance templates starts with gcloud compute instance-templates create.
  2. Step 2: Check the machine type flag

    The correct flag is --machine-type= followed by the machine type.
  3. Final Answer:

    gcloud compute instance-templates create web-template --machine-type=e2-medium -> Option B
  4. Quick Check:

    Correct command syntax = gcloud compute instance-templates create web-template --machine-type=e2-medium [OK]
Hint: Use 'instance-templates create' with '--machine-type' flag [OK]
Common Mistakes:
  • Using 'instances create' instead of 'instance-templates create'
  • Wrong flag names like '--machine' or '--type'
  • Incorrect command order or missing 'compute'
3. Given this snippet:
gcloud compute instance-templates create my-template \
  --machine-type=n1-standard-1 \
  --image-family=debian-11 \
  --image-project=debian-cloud

What will be the machine type of instances created from my-template?
medium
A. debian-11
B. e2-medium
C. n1-standard-1
D. debian-cloud

Solution

  1. Step 1: Identify the machine type flag in the command

    The flag --machine-type=n1-standard-1 sets the machine type.
  2. Step 2: Understand other flags

    --image-family and --image-project specify the OS image, not machine type.
  3. Final Answer:

    n1-standard-1 -> Option C
  4. Quick Check:

    Machine type flag sets instance type [OK]
Hint: Look for '--machine-type' flag for VM size [OK]
Common Mistakes:
  • Confusing image family with machine type
  • Choosing project name as machine type
  • Ignoring the '--machine-type' flag
4. You tried to create an instance template with this command:
gcloud compute instance-templates create test-template --machine-type e2-small

But it failed. What is the likely error?
medium
A. Missing image or boot disk specification
B. Instance template name 'test-template' is invalid
C. Machine type 'e2-small' does not exist
D. Command should be 'gcloud create instance-template'

Solution

  1. Step 1: Check required arguments for instance-templates create

    Instance templates require a machine type AND a boot disk specification (e.g., --image-family and --image-project).
  2. Step 2: Validate other parts

    The instance template name and machine type are valid, and the command starts correctly with gcloud compute instance-templates create. Flag syntax with space is accepted.
  3. Final Answer:

    Missing image or boot disk specification -> Option A
  4. Quick Check:

    Instance templates need image spec [OK]
Hint: Include --image-family & --image-project flags [OK]
Common Mistakes:
  • Forgetting to specify image or boot disk flags
  • Wrong command order or missing 'compute'
  • Assuming machine type is invalid without checking
5. You want to create a managed instance group that automatically updates all VMs when the instance template changes. Which approach should you use?
hard
A. Create a managed instance group with the instance template and enable rolling updates
B. Manually delete and recreate each VM after changing the template
C. Use an unmanaged instance group with the new template
D. Create a new instance template but keep the old managed group unchanged

Solution

  1. Step 1: Understand managed instance groups and updates

    Managed instance groups can use instance templates and support rolling updates to replace VMs smoothly.
  2. Step 2: Identify the best method for automatic updates

    Enabling rolling updates on the managed group with the new template applies changes automatically.
  3. Final Answer:

    Create a managed instance group with the instance template and enable rolling updates -> Option A
  4. Quick Check:

    Managed groups + rolling updates = automatic VM updates [OK]
Hint: Use managed groups with rolling updates for auto changes [OK]
Common Mistakes:
  • Thinking unmanaged groups support automatic updates
  • Manually recreating VMs instead of using rolling updates
  • Ignoring instance template updates in managed groups