Skip to content

Commit ba86511

Browse files
committed
updating module to support more features for windows vm scale sets
1 parent 9cf1863 commit ba86511

File tree

2 files changed

+52
-34
lines changed

2 files changed

+52
-34
lines changed

main.tf

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ resource "azurerm_linux_virtual_machine_scale_set" "linux_vmss" {
358358
lifecycle {
359359
ignore_changes = [
360360
tags,
361+
ip_tag,
361362
]
362363
}
363364

@@ -369,27 +370,33 @@ resource "azurerm_linux_virtual_machine_scale_set" "linux_vmss" {
369370
# Windows Virutal machine scale set
370371
#---------------------------------------
371372
resource "azurerm_windows_virtual_machine_scale_set" "winsrv_vmss" {
372-
count = var.os_flavor == "windows" ? 1 : 0
373-
name = format("%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", "")))
374-
computer_name_prefix = var.computer_name_prefix == null && var.instances_count == 1 ? substr(var.vmscaleset_name, 0, 15) : substr(format("%s%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", "")), count.index + 1), 0, 15)
375-
resource_group_name = data.azurerm_resource_group.rg.name
376-
location = data.azurerm_resource_group.rg.location
377-
overprovision = var.overprovision
378-
sku = var.virtual_machine_size
379-
instances = var.instances_count
380-
zones = var.availability_zones
381-
zone_balance = var.availability_zone_balance
382-
single_placement_group = var.single_placement_group
383-
admin_username = var.admin_username
384-
admin_password = var.admin_password == null ? random_password.passwd[count.index].result : var.admin_password
385-
tags = merge({ "ResourceName" = format("%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", ""))) }, var.tags, )
386-
source_image_id = var.source_image_id != null ? var.source_image_id : null
387-
upgrade_mode = var.os_upgrade_mode
388-
health_probe_id = var.enable_load_balancer ? azurerm_lb_probe.lbp[0].id : null
389-
provision_vm_agent = true
390-
enable_automatic_updates = false
391-
license_type = var.license_type
392-
timezone = var.vm_time_zone
373+
count = var.os_flavor == "windows" ? 1 : 0
374+
name = format("%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", "")))
375+
computer_name_prefix = var.computer_name_prefix == null && var.instances_count == 1 ? substr(var.vmscaleset_name, 0, 15) : substr(format("%s%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", "")), count.index + 1), 0, 15)
376+
resource_group_name = data.azurerm_resource_group.rg.name
377+
location = data.azurerm_resource_group.rg.location
378+
sku = var.virtual_machine_size
379+
instances = var.instances_count
380+
admin_username = var.admin_username
381+
admin_password = var.admin_password == null ? random_password.passwd[count.index].result : var.admin_password
382+
custom_data = var.custom_data
383+
overprovision = var.overprovision
384+
do_not_run_extensions_on_overprovisioned_machines = var.do_not_run_extensions_on_overprovisioned_machines
385+
enable_automatic_updates = var.enable_windows_vm_automatic_updates
386+
encryption_at_host_enabled = var.enable_encryption_at_host
387+
health_probe_id = var.enable_load_balancer ? azurerm_lb_probe.lbp[0].id : null
388+
license_type = var.license_type
389+
platform_fault_domain_count = var.platform_fault_domain_count
390+
provision_vm_agent = true
391+
proximity_placement_group_id = var.enable_proximity_placement_group ? azurerm_proximity_placement_group.appgrp.0.id : null
392+
scale_in_policy = var.scale_in_policy
393+
single_placement_group = var.single_placement_group
394+
source_image_id = var.source_image_id != null ? var.source_image_id : null
395+
upgrade_mode = var.os_upgrade_mode
396+
timezone = var.vm_time_zone
397+
zones = var.availability_zones
398+
zone_balance = var.availability_zone_balance
399+
tags = merge({ "resourcename" = format("%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", ""))) }, var.tags, )
393400

394401
dynamic "source_image_reference" {
395402
for_each = var.source_image_id != null ? [] : [1]
@@ -402,8 +409,11 @@ resource "azurerm_windows_virtual_machine_scale_set" "winsrv_vmss" {
402409
}
403410

404411
os_disk {
405-
storage_account_type = var.os_disk_storage_account_type
406-
caching = "ReadWrite"
412+
storage_account_type = var.os_disk_storage_account_type
413+
caching = var.os_disk_caching
414+
disk_encryption_set_id = var.disk_encryption_set_id
415+
disk_size_gb = var.disk_size_gb
416+
write_accelerator_enabled = var.enable_os_disk_write_accelerator
407417
}
408418

409419
dynamic "data_disk" {
@@ -412,6 +422,7 @@ resource "azurerm_windows_virtual_machine_scale_set" "winsrv_vmss" {
412422
lun = data_disk.key
413423
disk_size_gb = data_disk.value
414424
caching = "ReadWrite"
425+
create_option = "Empty"
415426
storage_account_type = var.additional_data_disks_storage_account_type
416427
}
417428
}
@@ -434,8 +445,8 @@ resource "azurerm_windows_virtual_machine_scale_set" "winsrv_vmss" {
434445
dynamic "public_ip_address" {
435446
for_each = var.assign_public_ip_to_each_vm_in_vmss ? [{}] : []
436447
content {
437-
name = lower("pip-${format("vm%s%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", "")), count.index + 1)}")
438-
domain_name_label = format("vm-%s%s-pip0${count.index + 1}", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", "")))
448+
name = lower("pip-${format("vm%s%s", lower(replace(var.vmscaleset_name, "/[[:^alnum:]]/", "")), count.index + 1)}")
449+
public_ip_prefix_id = var.public_ip_prefix_id
439450
}
440451
}
441452
}

variables.tf

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,21 @@ variable "do_not_run_extensions_on_overprovisioned_machines" {
180180
default = false
181181
}
182182

183+
variable "enable_windows_vm_automatic_updates" {
184+
description = "Are automatic updates enabled for Windows Virtual Machine in this scale set?"
185+
default = true
186+
}
187+
183188
variable "enable_encryption_at_host" {
184189
description = " Should all of the disks (including the temp disk) attached to this Virtual Machine be encrypted by enabling Encryption at Host?"
185190
default = false
186191
}
187192

193+
variable "license_type" {
194+
description = "Specifies the type of on-premise license which should be used for this Virtual Machine. Possible values are None, Windows_Client and Windows_Server."
195+
default = "None"
196+
}
197+
188198
variable "platform_fault_domain_count" {
189199
description = "Specifies the number of fault domains that are used by this Linux Virtual Machine Scale Set."
190200
default = null
@@ -367,6 +377,11 @@ variable "additional_data_disks" {
367377
default = []
368378
}
369379

380+
variable "additional_data_disks_storage_account_type" {
381+
description = "The Type of Storage Account which should back this Data Disk. Possible values include Standard_LRS, StandardSSD_LRS, Premium_LRS and UltraSSD_LRS."
382+
default = "Standard_LRS"
383+
}
384+
370385
variable "dns_servers" {
371386
description = "List of dns servers to use for network interface"
372387
default = []
@@ -436,11 +451,6 @@ variable "storage_account_uri" {
436451

437452

438453

439-
variable "license_type" {
440-
description = "Specifies the type of on-premise license which should be used for this Virtual Machine. Possible values are None, Windows_Client and Windows_Server."
441-
default = "None"
442-
}
443-
444454

445455

446456

@@ -452,10 +462,7 @@ variable "grace_period" {
452462

453463

454464

455-
variable "additional_data_disks_storage_account_type" {
456-
description = "The Type of Storage Account which should back this Data Disk. Possible values include Standard_LRS, StandardSSD_LRS, Premium_LRS and UltraSSD_LRS."
457-
default = "Standard_LRS"
458-
}
465+
459466

460467

461468

0 commit comments

Comments
 (0)