Bird
Raised Fist0
GCPcloud~30 mins

Resource definitions for GCP - Mini Project: Build & Apply

Choose your learning style10 modes available
Resource definitions for GCP
📖 Scenario: You are setting up a simple Google Cloud Platform (GCP) project. You need to define resources like a Compute Engine instance and a Cloud Storage bucket using configuration files.
🎯 Goal: Build a basic GCP resource definition using configuration files that create a virtual machine and a storage bucket.
📋 What You'll Learn
Create a resource definition for a Compute Engine instance named vm-instance-1 in zone us-central1-a.
Create a resource definition for a Cloud Storage bucket named my-storage-bucket-123 in location US.
Add a configuration variable for the machine type of the Compute Engine instance.
Use the machine type variable in the Compute Engine instance resource definition.
💡 Why This Matters
🌍 Real World
Defining resources in GCP using configuration files is a common task for automating cloud infrastructure setup.
💼 Career
Cloud engineers and DevOps professionals use resource definitions to manage infrastructure as code, enabling repeatable and consistent deployments.
Progress0 / 4 steps
1
Create initial resource definitions
Create a YAML resource definition for a Compute Engine instance named vm-instance-1 in zone us-central1-a. Use the resource type compute.v1.instance, name it vm-instance-1, and set the zone property exactly as specified.
GCP
Hint

Remember to use the exact resource type compute.v1.instance, name the resource vm-instance-1, and set the zone property inside properties.

2
Add a Cloud Storage bucket resource
Add a resource definition for a Cloud Storage bucket named my-storage-bucket-123 in location US. Use the resource type storage.v1.bucket and set the name and location properties exactly as specified.
GCP
Hint

Use the resource type storage.v1.bucket and set the name and location properties inside properties.

3
Add a machine type configuration variable
Create a configuration variable called machineType and set its value to zones/us-central1-a/machineTypes/n1-standard-1. This variable will be used to specify the machine type of the Compute Engine instance.
GCP
Hint

Define a variables section at the top level and add machineType: zones/us-central1-a/machineTypes/n1-standard-1 inside it.

4
Use the machine type variable in the Compute Engine instance
Update the Compute Engine instance resource to use the machineType variable for its machineType property. Use the syntax $(machineType) to reference the variable.
GCP
Hint

Add the machineType property inside the Compute Engine instance's properties and set it to $(machineType).

Practice

(1/5)
1. What is the main purpose of a resource definition in Google Cloud Platform (GCP)?
easy
A. To manually start and stop virtual machines
B. To write application code that runs on GCP
C. To monitor the usage of cloud resources
D. To tell GCP what cloud parts to create and how to configure them

Solution

  1. Step 1: Understand the role of resource definitions

    Resource definitions specify what cloud resources to create and their settings.
  2. Step 2: Compare options to the definition role

    Only To tell GCP what cloud parts to create and how to configure them describes creating and configuring cloud parts, which matches resource definitions.
  3. Final Answer:

    To tell GCP what cloud parts to create and how to configure them -> Option D
  4. Quick Check:

    Resource definitions = create and configure cloud parts [OK]
Hint: Resource definitions describe cloud parts to create [OK]
Common Mistakes:
  • Confusing resource definitions with application code
  • Thinking resource definitions monitor usage
  • Believing resource definitions manually control VMs
2. Which of the following is the correct minimal structure for a GCP resource definition in YAML?
easy
A. resources:\n - name: my-vm\n type: compute.instance\n properties:\n location: us-central1-a
B. resources:\n - id: my-vm\n kind: compute.v1.instance\n settings:\n zone: us-central1-a
C. resources:\n - name: my-vm\n type: compute.v1.instance\n properties:\n zone: us-central1-a
D. resource_list:\n - name: my-vm\n type: compute.v1.instance\n properties:\n zone: us-central1-a

Solution

  1. Step 1: Check the required keys in GCP resource definitions

    GCP expects 'resources' list with each item having 'name', 'type', and 'properties'.
  2. Step 2: Validate each option

    resources:\n - name: my-vm\n type: compute.v1.instance\n properties:\n zone: us-central1-a uses correct keys and valid type 'compute.v1.instance'. Others use wrong keys like 'id', 'kind', or wrong root key 'resource_list'. resources:\n - name: my-vm\n type: compute.instance\n properties:\n location: us-central1-a uses incorrect type 'compute.instance'.
  3. Final Answer:

    resources:\n - name: my-vm\n type: compute.v1.instance\n properties:\n zone: us-central1-a -> Option C
  4. Quick Check:

    Correct keys and type = resources:\n - name: my-vm\n type: compute.v1.instance\n properties:\n zone: us-central1-a [OK]
Hint: Look for 'resources', 'name', 'type', 'properties' keys [OK]
Common Mistakes:
  • Using 'id' instead of 'name'
  • Using 'kind' instead of 'type'
  • Wrong root key like 'resource_list'
  • Incorrect resource type format
3. Given this resource definition snippet, what will be the zone of the created VM?
resources:
  - name: test-vm
    type: compute.v1.instance
    properties:
      zone: europe-west1-b
      machineType: n1-standard-1
      disks:
        - deviceName: boot
          boot: true
          autoDelete: true
          initializeParams:
            sourceImage: projects/debian-cloud/global/images/family/debian-11
medium
A. europe-west1-b
B. us-central1-a
C. asia-east1-a
D. No zone specified, deployment will fail

Solution

  1. Step 1: Locate the zone property in the resource definition

    The 'zone' property is set to 'europe-west1-b' under 'properties'.
  2. Step 2: Understand zone usage in VM creation

    The VM will be created in the specified zone 'europe-west1-b'.
  3. Final Answer:

    europe-west1-b -> Option A
  4. Quick Check:

    Zone property value = europe-west1-b [OK]
Hint: Check 'zone' under 'properties' for VM location [OK]
Common Mistakes:
  • Assuming default zone if specified
  • Confusing machineType with zone
  • Thinking deployment fails without explicit zone
4. Identify the error in this resource definition snippet:
resources:
  - name: my-bucket
    type: storage.v1.bucket
    properties:
      location: us-east1
      storageClass: STANDARD
  - name: my-bucket
    type: storage.v1.bucket
    properties:
      location: us-west1
      storageClass: NEARLINE
medium
A. Invalid storageClass values used
B. Duplicate resource names cause deployment failure
C. Missing 'type' field in second resource
D. Location values are not allowed in bucket properties

Solution

  1. Step 1: Check resource names for uniqueness

    Both resources have the same name 'my-bucket', which is not allowed.
  2. Step 2: Verify other fields

    Both have 'type' and valid 'storageClass' and 'location'. Only duplicate names cause error.
  3. Final Answer:

    Duplicate resource names cause deployment failure -> Option B
  4. Quick Check:

    Unique resource names required = Duplicate resource names cause deployment failure [OK]
Hint: Resource names must be unique in definitions [OK]
Common Mistakes:
  • Ignoring duplicate names
  • Thinking storageClass values are invalid
  • Believing location is disallowed
5. You want to define a GCP resource that creates a Compute Engine VM with a specific network interface and a startup script. Which of the following resource definitions correctly includes both properties?
hard
A. resources: - name: vm-with-script type: compute.v1.instance properties: zone: us-central1-a machineType: n1-standard-1 networkInterfaces: - network: global/networks/default metadata: items: - key: startup-script value: |- #!/bin/bash echo Hello World > /var/log/startup.log
B. resources: - name: vm-with-script type: compute.v1.instance properties: zone: us-central1-a machineType: n1-standard-1 network: default startupScript: | #!/bin/bash echo Hello World > /var/log/startup.log
C. resources: - name: vm-with-script type: compute.v1.instance properties: zone: us-central1-a machineType: n1-standard-1 networkInterfaces: - network: default metadata: startup-script: | #!/bin/bash echo Hello World > /var/log/startup.log
D. resources: - name: vm-with-script type: compute.v1.instance properties: zone: us-central1-a machineType: n1-standard-1 networkInterfaces: - network: default metadata: items: - key: startup value: echo Hello World

Solution

  1. Step 1: Check network interface property format

    Correct format uses 'networkInterfaces' list with 'network' as full resource path or relative path like 'global/networks/default'.
  2. Step 2: Check metadata startup script format

    Metadata must have 'items' list with 'key' and 'value' pairs. The key for startup script is 'startup-script'.
  3. Step 3: Validate each option

    resources: - name: vm-with-script type: compute.v1.instance properties: zone: us-central1-a machineType: n1-standard-1 networkInterfaces: - network: global/networks/default metadata: items: - key: startup-script value: |- #!/bin/bash echo Hello World > /var/log/startup.log correctly uses 'networkInterfaces' with full network path and metadata with 'items' list and proper startup script. Others have incorrect keys or missing 'items' list.
  4. Final Answer:

    Option A correctly defines network interface and startup script -> Option A
  5. Quick Check:

    Correct networkInterfaces and metadata items = resources: - name: vm-with-script type: compute.v1.instance properties: zone: us-central1-a machineType: n1-standard-1 networkInterfaces: - network: global/networks/default metadata: items: - key: startup-script value: |- #!/bin/bash echo Hello World > /var/log/startup.log [OK]
Hint: Use 'networkInterfaces' list and metadata 'items' with key/value [OK]
Common Mistakes:
  • Using 'network' instead of 'networkInterfaces'
  • Missing 'items' list in metadata
  • Wrong key name for startup script
  • Incorrect network path format
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard