How to Deploy an Ubuntu Linux VM Instance in GCP using Terraform

Guillermo Musumeci
6 min readFeb 20, 2022

--

In this story, we will learn how to deploy an Ubuntu Linux VM Instance (VM) in GCP (Google Cloud Platform) using Terraform.

Prerequisite: GCP Credentials

Before creating our GCP VM Instances, we will need GCP Credentials to execute our Terraform code.

Please refer to the “How to Create a Service Account for Terraform in GCP (Google Cloud Platform)” story if you need help to create the credentials.

Note: Using private key .JSON files are great for learning and testing however they are not recommended in production environments. Never push private keys files to code repositories.

Creating a Terraform file for GCP Authentication

First, we create a file called provider-variables.tf, used by the GCP authentication variables, and add the following code to the file.

We will need a GCP Project Name, a GCP Region, and a .JSON file name with the private keys to authenticate to GCP.

# GCP authentication file
variable "gcp_auth_file" {
type = string
description = "GCP authentication file"
}
# define GCP region
variable "gcp_region" {
type = string
description = "GCP region"
}
# define GCP project name
variable "gcp_project" {
type = string
description = "GCP project name"
}

Then we create the “provider-main.tf” file and add the following code:

The version in the “required_providers” / “google” section is useful to pin a specific version but is not required.

# Define Terraform provider
terraform {
required_version = "~> 1.0"
required_providers {
google = {
source = "hashicorp/google"
version = "4.11.0" # pinning version
}
}
}
# Define GCP provider
provider "google" {
credentials = file(var.gcp_auth_file)
project = var.gcp_project
region = var.gcp_region
zone = var.gcp_zone
}

Finally, we use Provider in the “terraform.tfvars” file:

# GCP Settings
gcp_project = "kopicloud-medium"
gcp_region…

--

--

Guillermo Musumeci

Certified AWS, Azure & GCP Architect | HashiCorp Ambassador | Terraform SME | KopiCloud Founder | ex-AWS | Entrepreneur | Book Author | Husband & Dad of ✌