Learning how to create major resources with Terraform is important in understanding how Terraform works with GCP. In this hands-on lab, we will walk through what creating a Compute Engine instance looks like and how to configure it.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create a Service Account
- From Google Cloud console’s main navigation, choose IAM & Admin > Service Accounts.
- Click Create service account.
- Give your service account a name.
- Click Create.
- In the roles dropdown, select Project > Owner.
- Click Continue and then Done.
- Log in to the Host Instance and Ensure Terraform Is Installed
From Google Cloud navigation, choose Compute Engine > VM instances.
Click SSH next to
terraform-instance
.Use
root
privileges:sudo -i
Change into the
root
directory:cd /
Call Terraform:
terraform
- Create a Service Account Key within the Instance
Allow the SDK to communicate with GCP:
gcloud init --console-only
Enter
Y
andY
at the prompt.Choose your Cloud Project.
Select the Cloud Student account.
Choose Y to configure a default Compute Region and Zone
Choose "us-central1-c"
Copy the code provided.
Paste the code into the terminal.
Create the service account key:
gcloud iam service-accounts keys create /downloads/compute-instance.json --iam-account <SERVICE_ACCOUNT_EMAIL>
- Create and Deploy the Configuration File
Create a
main.tf
file:vim main.tf
Paste the following configuration, replacing
<PROJECT_NAME>
with your project name (found in the top navigation bar of the Google Cloud console):provider "google" { version = "3.5.0" credentials = file("/downloads/compute-instance.json") project = "<PROJECT_NAME>" region = "us-central1" zone = "us-central1-c" } resource "google_compute_network" "vpc_network" { name = "terraform-network" } resource "google_compute_instance" "vm_instance" { name = "terraform-instance2" machine_type = "f1-micro" zone = "us-central1-c" boot_disk { initialize_params { image = "centos-cloud/centos-7" } } network_interface { network = google_compute_network.vpc_network.name access_config { } } }
Save and exit the file by pressing Escape followed by
:wq
.Finish up by running
terraform init
,terraform validate
,terraform plan
, andterraform apply
.