blob: a09af6c6f9dcb6812288e784066d1241030633d5 [file] [log] [blame] [edit]
---
# ----------------------------------------------------------------------------
#
# *** AUTO GENERATED CODE *** Type: MMv1 ***
#
# ----------------------------------------------------------------------------
#
# This file is automatically generated by Magic Modules and manual
# changes will be clobbered when the file is regenerated.
#
# Please read more about how to change this file in
# .github/CONTRIBUTING.md.
#
# ----------------------------------------------------------------------------
subcategory: "Cloud TPU v2"
description: |-
A Cloud TPU VM instance.
---
# google_tpu_v2_vm
A Cloud TPU VM instance.
~> **Warning:** This resource is in beta, and should be used with the terraform-provider-google-beta provider.
See [Provider Versions](https://terraform.io/docs/providers/google/guides/provider_versions.html) for more details on beta resources.
To get more information about Vm, see:
* [API documentation](https://cloud.google.com/tpu/docs/reference/rest/v2/projects.locations.nodes)
* How-to Guides
* [Official Documentation](https://cloud.google.com/tpu/docs/)
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md&cloudshell_working_dir=tpu_v2_vm_basic&open_in_editor=main.tf" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Tpu V2 Vm Basic
```hcl
data "google_tpu_v2_runtime_versions" "available" {
provider = google-beta
}
resource "google_tpu_v2_vm" "tpu" {
provider = google-beta
name = "test-tpu"
zone = "us-central1-c"
runtime_version = "tpu-vm-tf-2.13.0"
}
```
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md&cloudshell_working_dir=tpu_v2_vm_full&open_in_editor=main.tf" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Tpu V2 Vm Full
```hcl
data "google_tpu_v2_runtime_versions" "available" {
provider = google-beta
}
data "google_tpu_v2_accelerator_types" "available" {
provider = google-beta
}
resource "google_tpu_v2_vm" "tpu" {
provider = google-beta
name = "test-tpu"
zone = "us-central1-c"
description = "Text description of the TPU."
runtime_version = "tpu-vm-tf-2.13.0"
accelerator_config {
type = "V2"
topology = "2x2"
}
cidr_block = "10.0.0.0/29"
network_config {
can_ip_forward = true
enable_external_ips = true
network = google_compute_network.network.id
subnetwork = google_compute_subnetwork.subnet.id
}
scheduling_config {
preemptible = true
}
shielded_instance_config {
enable_secure_boot = true
}
service_account {
email = google_service_account.sa.email
scope = [
"https://www.googleapis.com/auth/cloud-platform",
]
}
data_disks {
source_disk = google_compute_disk.disk.id
mode = "READ_ONLY"
}
labels = {
foo = "bar"
}
metadata = {
foo = "bar"
}
tags = ["foo"]
depends_on = [time_sleep.wait_60_seconds]
}
resource "google_compute_subnetwork" "subnet" {
provider = google-beta
name = "tpu-subnet"
ip_cidr_range = "10.0.0.0/16"
region = "us-central1"
network = google_compute_network.network.id
}
resource "google_compute_network" "network" {
provider = google-beta
name = "tpu-net"
auto_create_subnetworks = false
}
resource "google_service_account" "sa" {
provider = google-beta
account_id = "tpu-sa"
display_name = "Test TPU VM"
}
resource "google_compute_disk" "disk" {
provider = google-beta
name = "tpu-disk"
image = "debian-cloud/debian-11"
size = 10
type = "pd-ssd"
zone = "us-central1-c"
}
# Wait after service account creation to limit eventual consistency errors.
resource "time_sleep" "wait_60_seconds" {
depends_on = [google_service_account.sa]
create_duration = "60s"
}
```
## Argument Reference
The following arguments are supported:
* `name` -
(Required)
The immutable name of the TPU.
* `runtime_version` -
(Required)
Runtime version for the TPU.
- - -
* `accelerator_type` -
(Optional)
TPU accelerator type for the TPU. `accelerator_type` cannot be used at the same time as
`accelerator_config`. If neither is specified, `accelerator_type` defaults to 'v2-8'.
* `description` -
(Optional)
Text description of the TPU.
* `cidr_block` -
(Optional)
The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must
be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger
block would be wasteful (a node can only consume one IP address). Errors will occur if the
CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts
with any subnetworks in the user's provided network, or the provided network is peered with
another network that is using that CIDR block.
* `network_config` -
(Optional)
Network configurations for the TPU node.
Structure is [documented below](#nested_network_config).
* `service_account` -
(Optional)
The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is
specified, the default compute service account will be used.
Structure is [documented below](#nested_service_account).
* `scheduling_config` -
(Optional)
The scheduling options for this node.
Structure is [documented below](#nested_scheduling_config).
* `data_disks` -
(Optional)
The additional data disks for the Node.
Structure is [documented below](#nested_data_disks).
* `shielded_instance_config` -
(Optional)
Shielded Instance options.
Structure is [documented below](#nested_shielded_instance_config).
* `accelerator_config` -
(Optional)
The AccleratorConfig for the TPU Node. `accelerator_config` cannot be used at the same time
as `accelerator_type`. If neither is specified, `accelerator_type` defaults to 'v2-8'.
Structure is [documented below](#nested_accelerator_config).
* `labels` -
(Optional)
Resource labels to represent user-provided metadata.
**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
Please refer to the field `effective_labels` for all of the labels present on the resource.
* `metadata` -
(Optional)
Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script.
* `tags` -
(Optional)
Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.
* `zone` -
(Optional)
The GCP location for the TPU. If it is not provided, the provider zone is used.
* `project` - (Optional) The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.
<a name="nested_network_config"></a>The `network_config` block supports:
* `network` -
(Optional)
The name of the network for the TPU node. It must be a preexisting Google Compute Engine
network. If both network and subnetwork are specified, the given subnetwork must belong
to the given network. If network is not specified, it will be looked up from the
subnetwork if one is provided, or otherwise use "default".
* `subnetwork` -
(Optional)
The name of the subnetwork for the TPU node. It must be a preexisting Google Compute
Engine subnetwork. If both network and subnetwork are specified, the given subnetwork
must belong to the given network. If subnetwork is not specified, the subnetwork with the
same name as the network will be used.
* `enable_external_ips` -
(Optional)
Indicates that external IP addresses would be associated with the TPU workers. If set to
false, the specified subnetwork or network should have Private Google Access enabled.
* `can_ip_forward` -
(Optional)
Allows the TPU node to send and receive packets with non-matching destination or source
IPs. This is required if you plan to use the TPU workers to forward routes.
<a name="nested_service_account"></a>The `service_account` block supports:
* `email` -
(Optional)
Email address of the service account. If empty, default Compute service account will be used.
* `scope` -
(Optional)
The list of scopes to be made available for this service account. If empty, access to all
Cloud APIs will be allowed.
<a name="nested_scheduling_config"></a>The `scheduling_config` block supports:
* `preemptible` -
(Optional)
Defines whether the node is preemptible.
* `reserved` -
(Optional)
Whether the node is created under a reservation.
<a name="nested_data_disks"></a>The `data_disks` block supports:
* `source_disk` -
(Required)
Specifies the full path to an existing disk. For example:
"projects/my-project/zones/us-central1-c/disks/my-disk".
* `mode` -
(Optional)
The mode in which to attach this disk. If not specified, the default is READ_WRITE
mode. Only applicable to dataDisks.
Default value is `READ_WRITE`.
Possible values are: `READ_WRITE`, `READ_ONLY`.
<a name="nested_shielded_instance_config"></a>The `shielded_instance_config` block supports:
* `enable_secure_boot` -
(Required)
Defines whether the instance has Secure Boot enabled.
<a name="nested_accelerator_config"></a>The `accelerator_config` block supports:
* `type` -
(Required)
Type of TPU.
Possible values are: `V2`, `V3`, `V4`, `V5P`.
* `topology` -
(Required)
Topology of TPU in chips.
## Attributes Reference
In addition to the arguments listed above, the following computed attributes are exported:
* `id` - an identifier for the resource with format `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`
* `state` -
The current state for the TPU Node.
* `health` -
The health status of the TPU node.
* `health_description` -
If this field is populated, it contains a description of why the TPU Node is unhealthy.
* `api_version` -
The API version that created this Node.
* `queued_resource` -
The qualified name of the QueuedResource that requested this Node.
* `multislice_node` -
Whether the Node belongs to a Multislice group.
* `network_endpoints` -
The network endpoints where TPU workers can be accessed and sent work. It is recommended that
runtime clients of the node reach out to the 0th entry in this map first.
Structure is [documented below](#nested_network_endpoints).
* `symptoms` -
The Symptoms that have occurred to the TPU Node.
Structure is [documented below](#nested_symptoms).
* `terraform_labels` -
The combination of labels configured directly on the resource
and default labels configured on the provider.
* `effective_labels` -
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
<a name="nested_network_endpoints"></a>The `network_endpoints` block contains:
* `ip_address` -
(Output)
The internal IP address of this network endpoint.
* `port` -
(Output)
The port of this network endpoint.
* `access_config` -
(Output)
The access config for the TPU worker.
Structure is [documented below](#nested_access_config).
<a name="nested_access_config"></a>The `access_config` block contains:
* `external_ip` -
(Output)
An external IP address associated with the TPU worker.
<a name="nested_symptoms"></a>The `symptoms` block contains:
* `create_time` -
(Output)
Timestamp when the Symptom is created.
* `symptom_type` -
(Output)
Type of the Symptom.
* `details` -
(Output)
Detailed information of the current Symptom.
* `worker_id` -
(Output)
A string used to uniquely distinguish a worker within a TPU node.
## Timeouts
This resource provides the following
[Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options:
- `create` - Default is 20 minutes.
- `update` - Default is 20 minutes.
- `delete` - Default is 20 minutes.
## Import
Vm can be imported using any of these accepted formats:
* `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`
* `{{project}}/{{zone}}/{{name}}`
* `{{zone}}/{{name}}`
* `{{name}}`
In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Vm using one of the formats above. For example:
```tf
import {
id = "projects/{{project}}/locations/{{zone}}/nodes/{{name}}"
to = google_tpu_v2_vm.default
}
```
When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), Vm can be imported using one of the formats above. For example:
```
$ terraform import google_tpu_v2_vm.default projects/{{project}}/locations/{{zone}}/nodes/{{name}}
$ terraform import google_tpu_v2_vm.default {{project}}/{{zone}}/{{name}}
$ terraform import google_tpu_v2_vm.default {{zone}}/{{name}}
$ terraform import google_tpu_v2_vm.default {{name}}
```
## User Project Overrides
This resource supports [User Project Overrides](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference#user_project_override).