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" {