diff --git a/modules/compute-vm/README.md b/modules/compute-vm/README.md
index 5f2c9fbfd..8eda14895 100644
--- a/modules/compute-vm/README.md
+++ b/modules/compute-vm/README.md
@@ -44,7 +44,6 @@ module "spot-vm-example" {
options = {
allow_stopping_for_update = true
deletion_protection = false
- preemptible = true
spot = true
}
network_interfaces = [{
@@ -328,8 +327,8 @@ module "instance-group" {
|---|---|:---:|:---:|:---:|
| [name](variables.tf#L160) | Instance name. | string | ✓ | |
| [network_interfaces](variables.tf#L174) | Network interfaces configuration. Use self links for Shared VPC, set addresses to null if not needed. | list(object({…})) | ✓ | |
-| [project_id](variables.tf#L207) | Project id. | string | ✓ | |
-| [zone](variables.tf#L266) | Compute zone. | string | ✓ | |
+| [project_id](variables.tf#L201) | Project id. | string | ✓ | |
+| [zone](variables.tf#L260) | Compute zone. | string | ✓ | |
| [attached_disk_defaults](variables.tf#L17) | Defaults for attached disks options. | object({…}) | | {…} |
| [attached_disks](variables.tf#L32) | Additional disks, if options is null defaults will be used in its place. Source type is one of 'image' (zonal disks in vms and template), 'snapshot' (vm), 'existing', and null. | list(object({…})) | | [] |
| [boot_disk](variables.tf#L58) | Boot disk properties. | object({…}) | | {…} |
@@ -348,14 +347,14 @@ module "instance-group" {
| [metadata](variables.tf#L148) | Instance metadata. | map(string) | | {} |
| [min_cpu_platform](variables.tf#L154) | Minimum CPU platform. | string | | null |
| [network_interface_options](variables.tf#L165) | Network interfaces extended options. The key is the index of the inteface to configure. The value is an object with alias_ips and nic_type. Set alias_ips or nic_type to null if you need only one of them. | map(object({…})) | | {} |
-| [options](variables.tf#L187) | Instance options. | object({…}) | | {…} |
-| [scratch_disks](variables.tf#L212) | Scratch disks configuration. | object({…}) | | {…} |
-| [service_account](variables.tf#L224) | Service account email. Unused if service account is auto-created. | string | | null |
-| [service_account_create](variables.tf#L230) | Auto-create service account. | bool | | false |
-| [service_account_scopes](variables.tf#L238) | Scopes applied to service account. | list(string) | | [] |
-| [shielded_config](variables.tf#L244) | Shielded VM configuration of the instances. | object({…}) | | null |
-| [tag_bindings](variables.tf#L254) | Tag bindings for this instance, in key => tag value id format. | map(string) | | null |
-| [tags](variables.tf#L260) | Instance network tags for firewall rule targets. | list(string) | | [] |
+| [options](variables.tf#L187) | Instance options. | object({…}) | | {…} |
+| [scratch_disks](variables.tf#L206) | Scratch disks configuration. | object({…}) | | {…} |
+| [service_account](variables.tf#L218) | Service account email. Unused if service account is auto-created. | string | | null |
+| [service_account_create](variables.tf#L224) | Auto-create service account. | bool | | false |
+| [service_account_scopes](variables.tf#L232) | Scopes applied to service account. | list(string) | | [] |
+| [shielded_config](variables.tf#L238) | Shielded VM configuration of the instances. | object({…}) | | null |
+| [tag_bindings](variables.tf#L248) | Tag bindings for this instance, in key => tag value id format. | map(string) | | null |
+| [tags](variables.tf#L254) | Instance network tags for firewall rule targets. | list(string) | | [] |
## Outputs
diff --git a/modules/compute-vm/main.tf b/modules/compute-vm/main.tf
index 0f98fd04e..a8f2bb457 100644
--- a/modules/compute-vm/main.tf
+++ b/modules/compute-vm/main.tf
@@ -30,7 +30,7 @@ locals {
k => v if try(v.options.replica_zone, null) == null
}
on_host_maintenance = (
- var.options.preemptible || var.confidential_compute
+ var.options.spot || var.confidential_compute
? "TERMINATE"
: "MIGRATE"
)
@@ -212,10 +212,10 @@ resource "google_compute_instance" "default" {
}
scheduling {
- automatic_restart = !var.options.preemptible
+ automatic_restart = !var.options.spot
on_host_maintenance = local.on_host_maintenance
- preemptible = var.options.preemptible
- provisioning_model = var.options.spot ? "SPOT" : null
+ preemptible = var.options.spot
+ provisioning_model = var.options.spot ? "SPOT" : "STANDARD"
}
dynamic "scratch_disk" {
@@ -339,10 +339,10 @@ resource "google_compute_instance_template" "default" {
}
scheduling {
- automatic_restart = !var.options.preemptible
+ automatic_restart = !var.options.spot
on_host_maintenance = local.on_host_maintenance
- preemptible = var.options.preemptible
- provisioning_model = var.options.spot ? "SPOT" : null
+ preemptible = var.options.spot
+ provisioning_model = var.options.spot ? "SPOT" : "STANDARD"
}
service_account {
diff --git a/modules/compute-vm/variables.tf b/modules/compute-vm/variables.tf
index b074f63cf..a44e3bf72 100644
--- a/modules/compute-vm/variables.tf
+++ b/modules/compute-vm/variables.tf
@@ -189,19 +189,13 @@ variable "options" {
type = object({
allow_stopping_for_update = bool
deletion_protection = bool
- preemptible = bool
spot = bool
})
default = {
allow_stopping_for_update = true
deletion_protection = false
- preemptible = false
spot = false
}
- validation {
- condition = !var.options.spot || (var.options.spot && var.options.preemptible)
- error_message = "Variable var.option.preemptible must be `true` when var.options.spot is set to `true`."
- }
}
variable "project_id" {