diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/parameters.json b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/parameters.json old mode 100755 new mode 100644 index 6ff93df11d..51a6db548a --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/parameters.json +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/parameters.json @@ -99,6 +99,18 @@ "source": { "env": "KEY_STORE_ID" } + }, + { + "name": "os_disk_account_type", + "source": { + "env": "OS_DISK_ACCOUNT_TYPE" + } + }, + { + "name": "os_disk_size", + "source": { + "env": "OS_DISK_SIZE" + } } ] } diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/porter.yaml b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/porter.yaml index b8ecdc4c79..1c7ade1758 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/porter.yaml +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/porter.yaml @@ -1,7 +1,7 @@ --- schemaVersion: 1.0.0 name: tre-service-guacamole-linuxvm -version: 1.2.4 +version: 1.3.0 description: "An Azure TRE User Resource Template for Guacamole (Linux)" dockerfile: Dockerfile.tmpl registry: azuretre @@ -73,6 +73,14 @@ parameters: type: string description: "Timezone for the shutdown schedule" default: "UTC" + - name: os_disk_account_type + type: string + default: "Standard_LRS" + description: "The type of storage account to use for the OS disk" + - name: os_disk_size + type: int + default: 64 + description: "The size of the OS disk in GB" # the following are added automatically by the resource processor - name: id @@ -166,6 +174,8 @@ install: shutdown_timezone: ${ bundle.parameters.shutdown_timezone } enable_cmk_encryption: ${ bundle.parameters.enable_cmk_encryption } key_store_id: ${ bundle.parameters.key_store_id } + os_disk_account_type: ${ bundle.parameters.os_disk_account_type } + os_disk_size: ${ bundle.parameters.os_disk_size } backendConfig: use_azuread_auth: "true" use_oidc: "true" @@ -197,6 +207,8 @@ upgrade: shutdown_timezone: ${ bundle.parameters.shutdown_timezone } enable_cmk_encryption: ${ bundle.parameters.enable_cmk_encryption } key_store_id: ${ bundle.parameters.key_store_id } + os_disk_account_type: ${ bundle.parameters.os_disk_account_type } + os_disk_size: ${ bundle.parameters.os_disk_size } backendConfig: use_azuread_auth: "true" use_oidc: "true" @@ -240,6 +252,8 @@ uninstall: shutdown_timezone: ${ bundle.parameters.shutdown_timezone } enable_cmk_encryption: ${ bundle.parameters.enable_cmk_encryption } key_store_id: ${ bundle.parameters.key_store_id } + os_disk_account_type: ${ bundle.parameters.os_disk_account_type } + os_disk_size: ${ bundle.parameters.os_disk_size } backendConfig: use_azuread_auth: "true" use_oidc: "true" diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/template_schema.json b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/template_schema.json index 18e78a0754..cd8fb08888 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/template_schema.json +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/template_schema.json @@ -6,7 +6,9 @@ "description": "Linux virtual machine.", "required": [ "os_image", - "vm_size" + "vm_size", + "os_disk_account_type", + "os_disk_size" ], "authorizedRoles": [ "WorkspaceOwner", "WorkspaceResearcher" @@ -49,6 +51,38 @@ "title": "Enable Shutdown Schedule", "default": false, "description": "Enable automatic shutdown schedule for the VM" + }, + "os_disk_account_type": { + "$id": "#/properties/os_disk_account_type", + "type": "string", + "title": "OS Disk Account Type", + "description": "The type of storage account to use for the OS disk", + "default": "Standard_LRS", + "enum": [ + "Standard_LRS", + "Premium_LRS", + "StandardSSD_LRS", + "UltraSSD_LRS" + ] + }, + "os_disk_size": { + "$id": "#/properties/os_disk_size", + "type": "integer", + "title": "OS Disk Size", + "description": "The size of the OS disk in GB", + "default": 64, + "enum": [ + 64, + 128, + 256, + 512, + 1024, + 2048, + 4096, + 8192, + 16384, + 32767 + ] } }, "allOf": [ diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/linuxvm.tf b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/linuxvm.tf index 30b1fdfcb9..4d3b93837c 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/linuxvm.tf +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/linuxvm.tf @@ -65,7 +65,8 @@ resource "azurerm_linux_virtual_machine" "linuxvm" { os_disk { name = "osdisk-${local.vm_name}" caching = "ReadWrite" - storage_account_type = "Standard_LRS" + storage_account_type = var.os_disk_account_type + disk_size_gb = var.os_disk_size disk_encryption_set_id = var.enable_cmk_encryption ? azurerm_disk_encryption_set.linuxvm_disk_encryption[0].id : null } diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/variables.tf b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/variables.tf index 91bff4de77..f6186271f9 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/variables.tf +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-linuxvm/terraform/variables.tf @@ -44,3 +44,11 @@ variable "enable_cmk_encryption" { variable "key_store_id" { type = string } +variable "os_disk_account_type" { + type = string + default = "Standard_LRS" +} +variable "os_disk_size" { + type = number + default = 64 +} diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/parameters.json b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/parameters.json old mode 100755 new mode 100644 index d9becce90e..8fefefbb62 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/parameters.json +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/parameters.json @@ -99,6 +99,18 @@ "source": { "env": "KEY_STORE_ID" } + }, + { + "name": "os_disk_account_type", + "source": { + "env": "OS_DISK_ACCOUNT_TYPE" + } + }, + { + "name": "os_disk_size", + "source": { + "env": "OS_DISK_SIZE" + } } ] } diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/porter.yaml b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/porter.yaml index 0f727c688b..f0d0b00e56 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/porter.yaml +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/porter.yaml @@ -1,7 +1,7 @@ --- schemaVersion: 1.0.0 name: tre-service-guacamole-windowsvm -version: 1.2.5 +version: 1.3.0 description: "An Azure TRE User Resource Template for Guacamole (Windows 10)" dockerfile: Dockerfile.tmpl registry: azuretre @@ -114,6 +114,14 @@ parameters: - name: key_store_id type: string default: "" + - name: os_disk_account_type + type: string + default: "Standard_LRS" + description: "The type of storage account to use for the OS disk" + - name: os_disk_size + type: int + default: 128 + description: "The size of the OS disk in GB" outputs: - name: ip @@ -161,6 +169,8 @@ install: image_gallery_id: ${ bundle.parameters.image_gallery_id } enable_cmk_encryption: ${ bundle.parameters.enable_cmk_encryption } key_store_id: ${ bundle.parameters.key_store_id } + os_disk_account_type: ${ bundle.parameters.os_disk_account_type } + os_disk_size: ${ bundle.parameters.os_disk_size } backendConfig: use_azuread_auth: "true" use_oidc: "true" @@ -189,6 +199,8 @@ upgrade: image_gallery_id: ${ bundle.parameters.image_gallery_id } enable_cmk_encryption: ${ bundle.parameters.enable_cmk_encryption } key_store_id: ${ bundle.parameters.key_store_id } + os_disk_account_type: ${ bundle.parameters.os_disk_account_type } + os_disk_size: ${ bundle.parameters.os_disk_size } backendConfig: use_azuread_auth: "true" use_oidc: "true" @@ -229,6 +241,8 @@ uninstall: image_gallery_id: ${ bundle.parameters.image_gallery_id } enable_cmk_encryption: ${ bundle.parameters.enable_cmk_encryption } key_store_id: ${ bundle.parameters.key_store_id } + os_disk_account_type: ${ bundle.parameters.os_disk_account_type } + os_disk_size: ${ bundle.parameters.os_disk_size } backendConfig: use_azuread_auth: "true" use_oidc: "true" diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/template_schema.json b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/template_schema.json index 74518f33ee..442ae11f90 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/template_schema.json +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/template_schema.json @@ -5,6 +5,10 @@ "title": "Windows Virtual Machine", "description": "Windows virtual machine.", "required": [ + "os_image", + "vm_size", + "os_disk_account_type", + "os_disk_size" ], "authorizedRoles": [ "WorkspaceOwner", "WorkspaceResearcher" @@ -40,6 +44,38 @@ "title": "Shared storage", "default": true, "description": "Enable access to shared storage" + }, + "os_disk_account_type": { + "$id": "#/properties/os_disk_account_type", + "type": "string", + "title": "OS Disk Account Type", + "description": "The type of storage account to use for the OS disk", + "default": "Standard_LRS", + "enum": [ + "Standard_LRS", + "Premium_LRS", + "StandardSSD_LRS", + "UltraSSD_LRS" + ] + }, + "os_disk_size": { + "$id": "#/properties/os_disk_size", + "type": "integer", + "title": "OS Disk Size", + "description": "The size of the OS disk in GB", + "default": 128, + "enum": [ + 64, + 128, + 256, + 512, + 1024, + 2048, + 4096, + 8192, + 16384, + 32767 + ] } } } diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/variables.tf b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/variables.tf index 2e3f95b33d..977159576c 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/variables.tf +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/variables.tf @@ -33,3 +33,11 @@ variable "enable_cmk_encryption" { variable "key_store_id" { type = string } +variable "os_disk_account_type" { + type = string + default = "Standard_LRS" +} +variable "os_disk_size" { + type = number + default = 128 +} diff --git a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/windowsvm.tf b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/windowsvm.tf index 2640c00759..c95f2360b3 100644 --- a/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/windowsvm.tf +++ b/templates/workspace_services/guacamole/user_resources/guacamole-azure-windowsvm/terraform/windowsvm.tf @@ -76,7 +76,8 @@ resource "azurerm_windows_virtual_machine" "windowsvm" { os_disk { name = "osdisk-${local.vm_name}" caching = "ReadWrite" - storage_account_type = "Standard_LRS" + storage_account_type = var.os_disk_account_type + disk_size_gb = var.os_disk_size disk_encryption_set_id = var.enable_cmk_encryption ? azurerm_disk_encryption_set.windowsvm_disk_encryption[0].id : null }