google_compute_machine_image

Represents a Machine Image resource. Machine images store all the configuration, metadata, permissions, and data from one or more disks required to create a Virtual machine (VM) instance.

To get more information about MachineImage, see:

Open in Cloud Shell

Example Usage - Machine Image Basic

resource "google_compute_instance" "vm" {
  provider     = google-beta
  name         = "my-vm"
  machine_type = "e2-medium"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
  }
}

resource "google_compute_machine_image" "image" {
  provider        = google-beta
  name            = "my-image"
  source_instance = google_compute_instance.vm.self_link
}
Open in Cloud Shell

Example Usage - Compute Machine Image Kms

resource "google_compute_instance" "vm" {
  provider     = google-beta
  name         = "my-vm"
  machine_type = "e2-medium"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
  }
}

resource "google_compute_machine_image" "image" {
  provider        = google-beta
  name            = "my-image"
  source_instance = google_compute_instance.vm.self_link
  machine_image_encryption_key {
    kms_key_name = google_kms_crypto_key.crypto_key.id
  }
}

resource "google_kms_crypto_key" "crypto_key" {
  provider = google-beta
  name     = "key"
  key_ring = google_kms_key_ring.key_ring.id
}

resource "google_kms_key_ring" "key_ring" {
  provider = google-beta
  name     = "keyring"
  location = "us"
}

Argument Reference

The following arguments are supported:


The machine_image_encryption_key block supports:

Attributes Reference

In addition to the arguments listed above, the following computed attributes are exported:

Timeouts

This resource provides the following Timeouts configuration options:

Import

MachineImage can be imported using any of these accepted formats:

In Terraform v1.5.0 and later, use an import block to import MachineImage using one of the formats above. For example:

import {
  id = "projects/{{project}}/global/machineImages/{{name}}"
  to = google_compute_machine_image.default
}

When using the terraform import command, MachineImage can be imported using one of the formats above. For example:

$ terraform import google_compute_machine_image.default projects/{{project}}/global/machineImages/{{name}}
$ terraform import google_compute_machine_image.default {{project}}/{{name}}
$ terraform import google_compute_machine_image.default {{name}}

User Project Overrides

This resource supports User Project Overrides.