2014-08-26 21:50:29 +00:00
|
|
|
---
|
|
|
|
layout: "google"
|
|
|
|
page_title: "Google: google_compute_instance"
|
|
|
|
sidebar_current: "docs-google-resource-instance"
|
2014-10-22 03:21:56 +00:00
|
|
|
description: |-
|
|
|
|
Manages a VM instance resource within GCE.
|
2014-08-26 21:50:29 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
# google\_compute\_instance
|
|
|
|
|
2014-11-20 17:40:17 +00:00
|
|
|
Manages a VM instance resource within GCE. For more information see
|
|
|
|
[the official documentation](https://cloud.google.com/compute/docs/instances)
|
|
|
|
and
|
|
|
|
[API](https://cloud.google.com/compute/docs/reference/latest/instances).
|
|
|
|
|
2014-08-26 21:50:29 +00:00
|
|
|
|
|
|
|
## Example Usage
|
|
|
|
|
|
|
|
```
|
|
|
|
resource "google_compute_instance" "default" {
|
|
|
|
name = "test"
|
|
|
|
machine_type = "n1-standard-1"
|
|
|
|
zone = "us-central1-a"
|
|
|
|
tags = ["foo", "bar"]
|
|
|
|
|
|
|
|
disk {
|
|
|
|
image = "debian-7-wheezy-v20140814"
|
|
|
|
}
|
|
|
|
|
2015-05-12 01:40:37 +00:00
|
|
|
// Local SSD disk
|
|
|
|
disk {
|
|
|
|
type = "local-ssd"
|
|
|
|
scratch = true
|
|
|
|
}
|
|
|
|
|
2015-02-06 08:21:22 +00:00
|
|
|
network_interface {
|
|
|
|
network = "default"
|
|
|
|
access_config {
|
|
|
|
// Ephemeral IP
|
|
|
|
}
|
2014-08-26 21:50:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
metadata {
|
|
|
|
foo = "bar"
|
|
|
|
}
|
2014-10-07 08:16:50 +00:00
|
|
|
|
2015-07-02 01:24:34 +00:00
|
|
|
metadata_startup_script = "echo hi > /test.txt"
|
|
|
|
|
2014-10-07 08:16:50 +00:00
|
|
|
service_account {
|
|
|
|
scopes = ["userinfo-email", "compute-ro", "storage-ro"]
|
|
|
|
}
|
2014-08-26 21:50:29 +00:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Argument Reference
|
|
|
|
|
|
|
|
The following arguments are supported:
|
|
|
|
|
|
|
|
* `name` - (Required) A unique name for the resource, required by GCE.
|
|
|
|
Changing this forces a new resource to be created.
|
|
|
|
|
|
|
|
* `description` - (Optional) A brief description of this resource.
|
|
|
|
|
|
|
|
* `machine_type` - (Required) The machine type to create.
|
|
|
|
|
|
|
|
* `zone` - (Required) The zone that the machine should be created in.
|
|
|
|
|
|
|
|
* `disk` - (Required) Disks to attach to the instance. This can be specified
|
|
|
|
multiple times for multiple disks. Structure is documented below.
|
|
|
|
|
2014-10-07 16:24:13 +00:00
|
|
|
* `can_ip_forward` - (Optional) Whether to allow sending and receiving of
|
|
|
|
packets with non-matching source or destination IPs.
|
|
|
|
This defaults to false.
|
|
|
|
|
2014-08-26 21:50:29 +00:00
|
|
|
* `metadata` - (Optional) Metadata key/value pairs to make available from
|
|
|
|
within the instance.
|
|
|
|
|
2015-07-02 01:24:34 +00:00
|
|
|
* `metadata_startup_script` - (Optional) An alternative to using the
|
|
|
|
startup-script metadata key, except this one forces the instance to be
|
|
|
|
recreated (thus re-running the script) if it is changed. This replaces the
|
|
|
|
startup-script metadata key on the created instance and thus the two mechanisms
|
|
|
|
are not allowed to be used simultaneously.
|
|
|
|
|
2015-02-06 08:21:22 +00:00
|
|
|
* `network_interface` - (Required) Networks to attach to the instance. This can be
|
2015-10-18 17:21:41 +00:00
|
|
|
specified multiple times for multiple networks, but GCE is currently limited
|
|
|
|
to just 1. Structure is documented below.
|
2015-02-06 08:21:22 +00:00
|
|
|
|
|
|
|
* `network` - (DEPRECATED, Required) Networks to attach to the instance. This can be
|
2014-08-26 21:50:29 +00:00
|
|
|
specified multiple times for multiple networks. Structure is documented
|
|
|
|
below.
|
|
|
|
|
2014-10-07 08:16:50 +00:00
|
|
|
* `service_account` - (Optional) Service account to attach to the instance.
|
|
|
|
|
2014-08-26 21:50:29 +00:00
|
|
|
* `tags` - (Optional) Tags to attach to the instance.
|
|
|
|
|
2015-05-12 01:40:37 +00:00
|
|
|
The `disk` block supports: (Note that either disk or image is required, unless
|
|
|
|
the type is "local-ssd", in which case scratch must be true).
|
2014-08-26 21:50:29 +00:00
|
|
|
|
2015-05-12 01:40:37 +00:00
|
|
|
* `disk` - The name of the existing disk (such as those managed by
|
|
|
|
`google_compute_disk`) to attach.
|
2014-08-26 21:50:29 +00:00
|
|
|
|
2015-05-12 01:40:37 +00:00
|
|
|
* `image` - The image from which to initialize this
|
|
|
|
disk. Either the full URL, a contraction of the form "project/name", or just
|
|
|
|
a name (in which case the current project is used).
|
2014-08-26 21:50:29 +00:00
|
|
|
|
2014-09-07 23:10:56 +00:00
|
|
|
* `auto_delete` - (Optional) Whether or not the disk should be auto-deleted.
|
2015-05-12 01:40:37 +00:00
|
|
|
This defaults to true. Leave true for local SSDs.
|
|
|
|
|
|
|
|
* `type` - (Optional) The GCE disk type, e.g. pd-standard, pd-ssd, or local-ssd.
|
2014-09-07 23:10:56 +00:00
|
|
|
|
2015-05-12 01:40:37 +00:00
|
|
|
* `scratch` - (Optional) Whether the disk is a scratch disk as opposed to a
|
|
|
|
persistent disk (required for local-ssd).
|
2014-10-07 04:59:09 +00:00
|
|
|
|
2015-05-12 01:40:37 +00:00
|
|
|
* `size` - (Optional) The size of the image in gigabytes. If not specified, it
|
|
|
|
will inherit the size of its base image. Do not specify for local SSDs as
|
|
|
|
their size is fixed.
|
2015-03-24 16:45:20 +00:00
|
|
|
|
2015-04-08 11:41:47 +00:00
|
|
|
* `device_name` - (Optional) Name with which attached disk will be accessible
|
|
|
|
under `/dev/disk/by-id/`
|
|
|
|
|
2015-02-06 08:21:22 +00:00
|
|
|
The `network_interface` block supports:
|
|
|
|
|
|
|
|
* `network` - (Required) The name of the network to attach this interface to.
|
|
|
|
|
|
|
|
* `access_config` - (Optional) Access configurations, i.e. IPs via which this instance can be
|
|
|
|
accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet
|
|
|
|
(this means that ssh provisioners will not work unless you are running Terraform can send traffic to
|
|
|
|
the instance's network (e.g. via tunnel or because it is running on another cloud instance on that
|
|
|
|
network). This block can be repeated multiple times. Structure documented below.
|
|
|
|
|
|
|
|
The `access_config` block supports:
|
|
|
|
|
|
|
|
* `nat_ip` - (Optional) The IP address that will be 1:1 mapped to the instance's network ip. If not
|
|
|
|
given, one will be generated.
|
|
|
|
|
|
|
|
(DEPRECATED) The `network` block supports:
|
2014-08-26 21:50:29 +00:00
|
|
|
|
|
|
|
* `source` - (Required) The name of the network to attach this interface to.
|
|
|
|
|
|
|
|
* `address` - (Optional) The IP address of a reserved IP address to assign
|
|
|
|
to this interface.
|
|
|
|
|
2014-10-07 08:16:50 +00:00
|
|
|
The `service_account` block supports:
|
|
|
|
|
2015-01-14 17:28:25 +00:00
|
|
|
* `scopes` - (Required) A list of service scopes. Both OAuth2 URLs and gcloud
|
2014-10-07 08:16:50 +00:00
|
|
|
short names are supported.
|
|
|
|
|
2015-10-26 20:16:06 +00:00
|
|
|
The `scheduling` block supports:
|
|
|
|
|
|
|
|
* `preemptible` - (Optional) Is the instance preemptible.
|
|
|
|
|
|
|
|
* `on_host_maintenance` - (Optional) Describes maintenance behavior for
|
|
|
|
the instance. Can be MIGRATE or TERMINATE, for more info, read
|
|
|
|
[here](https://cloud.google.com/compute/docs/instances/setting-instance-scheduling-options)
|
|
|
|
|
|
|
|
* `automatic_restart` - (Optional) Specifies if the instance should be
|
|
|
|
restarted if it was terminated by Compute Engine (not a user).
|
|
|
|
|
2014-08-26 21:50:29 +00:00
|
|
|
## Attributes Reference
|
|
|
|
|
|
|
|
The following attributes are exported:
|
|
|
|
|
|
|
|
* `name` - The name of the resource.
|
|
|
|
* `machine_type` - The type of machine.
|
|
|
|
* `zone` - The zone the machine lives in.
|