Use Terraform to create a Compute Engine instance

## Code sample

### Terraform


To learn how to apply or remove a Terraform configuration, see
[Basic Terraform commands](https://docs.cloud.google.com/docs/terraform/basic-commands).


For more information, see the
[Terraform provider reference documentation](https://registry.terraform.io/providers/hashicorp/google/latest/docs).


    # Create a VM instance from a public image
    # in the `default` VPC network and subnet

    resource "google_compute_instance" "default" {
      name         = "my-vm"
      machine_type = "n1-standard-1"
      zone         = "us-central1-a"

      boot_disk {
        initialize_params {
          image = "ubuntu-minimal-2210-kinetic-amd64-v20230126"
        }
      }

      network_interface {
        network = "default"
        access_config {}
      }
    }

    resource "google_compute_network" "custom" {
      name                    = "my-network"
      auto_create_subnetworks = false
    }

    resource "google_compute_subnetwork" "custom" {
      name          = "my-subnet"
      ip_cidr_range = "10.0.1.0/24"
      region        = "europe-west1"
      network       = google_compute_network.custom.id
    }


    # Create a VM in a custom VPC network and subnet

    resource "google_compute_instance" "custom_subnet" {
      name         = "my-vm-instance"
      tags         = ["allow-ssh"]
      zone         = "europe-west1-b"
      machine_type = "e2-small"
      network_interface {
        network    = google_compute_network.custom.id
        subnetwork = google_compute_subnetwork.custom.id
      }
      boot_disk {
        initialize_params {
          image = "debian-cloud/debian-12"
        }
      }
    }

## What's next


To search and filter code samples for other Google Cloud products, see the
[Google Cloud sample browser](https://docs.cloud.google.com/docs/samples?product=computeengine).