Skip to content

Commit 16bbabc

Browse files
authored
Merge pull request GoogleCloudPlatform#4256 from mr0re1/custom_ss
Allow to supply custom startup script
2 parents 05c9356 + 50e6147 commit 16bbabc

6 files changed

Lines changed: 18 additions & 1 deletion

File tree

community/modules/internal/slurm-gcp/instance_template/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
| <a name="input_enable_oslogin"></a> [enable\_oslogin](#input\_enable\_oslogin) | Enables Google Cloud os-login for user login and authentication for VMs.<br/>See https://cloud.google.com/compute/docs/oslogin | `bool` | `true` | no |
4444
| <a name="input_enable_shielded_vm"></a> [enable\_shielded\_vm](#input\_enable\_shielded\_vm) | Enable the Shielded VM configuration. Note: the instance image must support option. | `bool` | `false` | no |
4545
| <a name="input_gpu"></a> [gpu](#input\_gpu) | GPU information. Type and count of GPU to attach to the instance template. See<br/>https://cloud.google.com/compute/docs/gpus more details.<br/>- type : the GPU type<br/>- count : number of GPUs | <pre>object({<br/> type = string<br/> count = number<br/> })</pre> | `null` | no |
46+
| <a name="input_internal_startup_script"></a> [internal\_startup\_script](#input\_internal\_startup\_script) | FOR INTERNAL TOOLKIT USAGE ONLY. | `string` | `null` | no |
4647
| <a name="input_labels"></a> [labels](#input\_labels) | Labels, provided as a map | `map(string)` | `{}` | no |
4748
| <a name="input_machine_type"></a> [machine\_type](#input\_machine\_type) | Machine type to create. | `string` | `"n1-standard-1"` | no |
4849
| <a name="input_max_run_duration"></a> [max\_run\_duration](#input\_max\_run\_duration) | The duration (in whole seconds) of the instance. Instance will run and be terminated after then. | `number` | `null` | no |

community/modules/internal/slurm-gcp/instance_template/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ module "instance_template" {
128128
resource_manager_tags = var.resource_manager_tags
129129

130130
# Metadata
131-
startup_script = data.local_file.startup.content
131+
startup_script = coalesce(var.internal_startup_script, data.local_file.startup.content)
132132
metadata = merge(
133133
var.metadata,
134134
{

community/modules/internal/slurm-gcp/instance_template/variables.tf

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,3 +422,10 @@ variable "reservation_affinity" {
422422
type = object({ type = string })
423423
default = null
424424
}
425+
426+
427+
variable "internal_startup_script" {
428+
description = "FOR INTERNAL TOOLKIT USAGE ONLY."
429+
type = string
430+
default = null
431+
}

community/modules/internal/slurm-gcp/login/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
| Name | Description | Type | Default | Required |
3232
|------|-------------|------|---------|:--------:|
33+
| <a name="input_internal_startup_script"></a> [internal\_startup\_script](#input\_internal\_startup\_script) | FOR INTERNAL TOOLKIT USAGE ONLY. | `string` | `null` | no |
3334
| <a name="input_login_nodes"></a> [login\_nodes](#input\_login\_nodes) | Slurm login instance definitions. | <pre>object({<br/> group_name = string<br/> access_config = optional(list(object({<br/> nat_ip = string<br/> network_tier = string<br/> })))<br/> additional_disks = optional(list(object({<br/> disk_name = optional(string)<br/> device_name = optional(string)<br/> disk_size_gb = optional(number)<br/> disk_type = optional(string)<br/> disk_labels = optional(map(string), {})<br/> auto_delete = optional(bool, true)<br/> boot = optional(bool, false)<br/> disk_resource_manager_tags = optional(map(string), {})<br/> })), [])<br/> additional_networks = optional(list(object({<br/> access_config = optional(list(object({<br/> nat_ip = string<br/> network_tier = string<br/> })), [])<br/> alias_ip_range = optional(list(object({<br/> ip_cidr_range = string<br/> subnetwork_range_name = string<br/> })), [])<br/> ipv6_access_config = optional(list(object({<br/> network_tier = string<br/> })), [])<br/> network = optional(string)<br/> network_ip = optional(string, "")<br/> nic_type = optional(string)<br/> queue_count = optional(number)<br/> stack_type = optional(string)<br/> subnetwork = optional(string)<br/> subnetwork_project = optional(string)<br/> })), [])<br/> bandwidth_tier = optional(string, "platform_default")<br/> can_ip_forward = optional(bool, false)<br/> disk_auto_delete = optional(bool, true)<br/> disk_labels = optional(map(string), {})<br/> disk_resource_manager_tags = optional(map(string), {})<br/> disk_size_gb = optional(number)<br/> disk_type = optional(string, "n1-standard-1")<br/> enable_confidential_vm = optional(bool, false)<br/> enable_oslogin = optional(bool, true)<br/> enable_shielded_vm = optional(bool, false)<br/> gpu = optional(object({<br/> count = number<br/> type = string<br/> }))<br/> labels = optional(map(string), {})<br/> machine_type = optional(string)<br/> advanced_machine_features = object({<br/> enable_nested_virtualization = optional(bool)<br/> threads_per_core = optional(number)<br/> turbo_mode = optional(string)<br/> visible_core_count = optional(number)<br/> performance_monitoring_unit = optional(string)<br/> enable_uefi_networking = optional(bool)<br/> })<br/> metadata = optional(map(string), {})<br/> min_cpu_platform = optional(string)<br/> num_instances = optional(number, 1)<br/> on_host_maintenance = optional(string)<br/> preemptible = optional(bool, false)<br/> region = optional(string)<br/> resource_manager_tags = optional(map(string), {})<br/> service_account = optional(object({<br/> email = optional(string)<br/> scopes = optional(list(string), ["https://www.googleapis.com/auth/cloud-platform"])<br/> }))<br/> shielded_instance_config = optional(object({<br/> enable_integrity_monitoring = optional(bool, true)<br/> enable_secure_boot = optional(bool, true)<br/> enable_vtpm = optional(bool, true)<br/> }))<br/> source_image_family = optional(string)<br/> source_image_project = optional(string)<br/> source_image = optional(string)<br/> static_ips = optional(list(string), [])<br/> subnetwork = string<br/> spot = optional(bool, false)<br/> tags = optional(list(string), [])<br/> zone = optional(string)<br/> termination_action = optional(string)<br/> })</pre> | n/a | yes |
3435
| <a name="input_network_storage"></a> [network\_storage](#input\_network\_storage) | Storage to mounted on login instances<br/>- server\_ip : Address of the storage server.<br/>- remote\_mount : The location in the remote instance filesystem to mount from.<br/>- local\_mount : The location on the instance filesystem to mount to.<br/>- fs\_type : Filesystem type (e.g. "nfs").<br/>- mount\_options : Options to mount with. | <pre>list(object({<br/> server_ip = string<br/> remote_mount = string<br/> local_mount = string<br/> fs_type = string<br/> mount_options = string<br/> }))</pre> | `[]` | no |
3536
| <a name="input_project_id"></a> [project\_id](#input\_project\_id) | Project ID to create resources in. | `string` | n/a | yes |

community/modules/internal/slurm-gcp/login/main.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ module "template" {
5454
subnetwork = var.login_nodes.subnetwork
5555
tags = concat([var.slurm_cluster_name], var.login_nodes.tags)
5656
termination_action = var.login_nodes.termination_action
57+
58+
internal_startup_script = var.internal_startup_script
5759
}
5860

5961
module "instance" {

community/modules/internal/slurm-gcp/login/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,9 @@ variable "replace_trigger" {
180180
type = string
181181
default = ""
182182
}
183+
184+
variable "internal_startup_script" {
185+
description = "FOR INTERNAL TOOLKIT USAGE ONLY."
186+
type = string
187+
default = null
188+
}

0 commit comments

Comments
 (0)