Terraform plan : mutliple error

Hello all,

I encounter many error when I do terraform plan of my code for gcp.
I’m very newbie with cloud and terraform.
Could you help me to fix my code please?

The error list is:

Error: google_compute_instance.www-1: “network_interface”: required field is not set

Error: google_compute_instance.www-1: : invalid or unknown key: network

Error: google_compute_instance.www-2: “network_interface”: required field is not set

Error: google_compute_instance.www-2: : invalid or unknown key: network

Error: provider.google: zone must be a single value, not a list

here is my code:
front-www.tf

resource "google_compute_instance" "www-1" {
    	name = "simm-${var.web-hostname[0]}"
    	zone = "${var.area[0]}"
	    machine_type = "${var.compute_web}"
		boot_disk {
    		initialize_params {
      			image = "debian-9-stretch-v20190916"
    			}
  			}
	    can_ip_forward = false

		network {
						
			subnetwork = "${google_compute_subnetwork.net-webapp.name}"
			network_interface {
    			network = "default"
			}

		}
			
		
}

resource "google_compute_instance" "www-2" {
    	name = "simm-${var.web-hostname[1]}"
    	zone ="${var.area[1]}"
	    machine_type = "${var.compute_web}"
	    		boot_disk {
    		initialize_params {
      			image = "debian-9-stretch-v20190916"
    			}
  			}
		can_ip_forward = false

		network {
						
			subnetwork = "${google_compute_subnetwork.net-webapp.name}"
			network_interface {
    			network = "default"
			}


		}

networks.tf

resource "google_compute_network" "vpc" {
  name                    = "global-vpc"
  auto_create_subnetworks = "false"
}


resource "google_compute_subnetwork" "net-bastion" {
  name          = "vlan-front"
  ip_cidr_range = "10.33.80.0/24"
  network       = "${google_compute_network.vpc.self_link}"
}

resource "google_compute_subnetwork" "net-webapp" {
  name          = "vlan-db"
  ip_cidr_range = "10.33.81.0/24"
  network       = "${google_compute_network.vpc.self_link}"
  region = "${var.region}"
}

firewalls.tf

resource "google_compute_firewall" "SshIn" {
  name = "http_ingress"
  network = "${google_compute_subnetwork.net-bastion.name}"
  target_tags = ["bastion"]
  source_ranges = ["0.0.0.0/0"]

  allow {
    protocol = "tcp"
    ports = ["22"]
  }
}

resource "google_compute_firewall" "HttpIn" {
  name = "ssh-db"
  network = "${google_compute_subnetwork.net-webapp.name}"
  target_tags = ["webapp"]
  source_ranges = ["0.0.0.0/0"]

  allow {
    protocol = "tcp"
    ports = ["80"]
  }

  allow {
    protocol = "tcp"
    ports = ["443"]
  }
}

vars.tf

variable "project" {default= "eco2019"}
variable "compute_web" { default = "n1-standard-1"}
variable "web-hostname" { default = ["www-1", "wwww-2"] }
variable "region" { default = "europe-west1"}
variable "area" { default = ["europe-west-a","europe-west-b","europe-west-c"]} `

Thank you for your help

The google_compute_instance resource definition should have network_interface directly under the resource:
e.g.

resource "google_compute_instance" "www-1" {
...
  network_interface {
    network = "default"
    subnetwork = "${google_compute_subnetwork.net-webapp.name}"
  }
...
}

See this example from the Terraform docs.

Thank you Matt

I fixed my code following your remark.
All work fine

1 Like