Skip to content

compute/virtual_machine_scale_set

Overview

This page documents the Terraform module implementation, key configuration surfaces, and how it integrates with CAF.

Dependency diagram (Mermaid)

graph TD azurecaf_name.linux["azurecaf_name.linux"] azurecaf_name.linux_computer_name_prefix["azurecaf_name.linux_computer_name_prefix"] azurecaf_name.linux_nic["azurecaf_name.linux_nic"] azurecaf_name.os_disk_linux["azurecaf_name.os_disk_linux"] azurecaf_name.os_disk_windows["azurecaf_name.os_disk_windows"] azurecaf_name.windows["azurecaf_name.windows"] azurecaf_name.windows_computer_name_prefix["azurecaf_name.windows_computer_name_prefix"] azurecaf_name.windows_nic["azurecaf_name.windows_nic"] azurerm_key_vault_certificate.self_signed_winrm["azurerm_key_vault_certificate.self_signed_winrm"] azurerm_key_vault_secret.admin_password["azurerm_key_vault_secret.admin_password"] azurerm_key_vault_secret.ssh_private_key["azurerm_key_vault_secret.ssh_private_key"] azurerm_key_vault_secret.ssh_public_key_openssh["azurerm_key_vault_secret.ssh_public_key_openssh"] azurerm_linux_virtual_machine_scale_set.vmss["azurerm_linux_virtual_machine_scale_set.vmss"] azurerm_linux_virtual_machine_scale_set.vmss_autoscaled["azurerm_linux_virtual_machine_scale_set.vmss_autoscaled"] azurerm_windows_virtual_machine_scale_set.vmss["azurerm_windows_virtual_machine_scale_set.vmss"] data.external.windows_admin_password["data.external.windows_admin_password"] data.external.windows_admin_username["data.external.windows_admin_username"] random_password.admin["random_password.admin"] tls_private_key.ssh["tls_private_key.ssh"] azurerm_key_vault_certificate.self_signed_winrm --> azurecaf_name.windows azurerm_key_vault_secret.admin_password --> azurecaf_name.windows_computer_name_prefix azurerm_key_vault_secret.admin_password --> random_password.admin azurerm_key_vault_secret.ssh_private_key --> azurecaf_name.linux_computer_name_prefix azurerm_key_vault_secret.ssh_private_key --> tls_private_key.ssh azurerm_key_vault_secret.ssh_public_key_openssh --> azurecaf_name.linux_computer_name_prefix azurerm_key_vault_secret.ssh_public_key_openssh --> tls_private_key.ssh azurerm_linux_virtual_machine_scale_set.vmss --> azurecaf_name.linux azurerm_linux_virtual_machine_scale_set.vmss --> azurecaf_name.linux_computer_name_prefix azurerm_linux_virtual_machine_scale_set.vmss --> azurecaf_name.linux_nic azurerm_linux_virtual_machine_scale_set.vmss --> tls_private_key.ssh azurerm_linux_virtual_machine_scale_set.vmss_autoscaled --> azurecaf_name.linux azurerm_linux_virtual_machine_scale_set.vmss_autoscaled --> azurecaf_name.linux_computer_name_prefix azurerm_linux_virtual_machine_scale_set.vmss_autoscaled --> azurecaf_name.linux_nic azurerm_linux_virtual_machine_scale_set.vmss_autoscaled --> tls_private_key.ssh azurerm_windows_virtual_machine_scale_set.vmss --> azurecaf_name.windows azurerm_windows_virtual_machine_scale_set.vmss --> azurecaf_name.windows_computer_name_prefix azurerm_windows_virtual_machine_scale_set.vmss --> azurecaf_name.windows_nic azurerm_windows_virtual_machine_scale_set.vmss --> azurerm_key_vault_certificate.self_signed_winrm azurerm_windows_virtual_machine_scale_set.vmss --> random_password.admin

Module Reference

Category: compute
Path: modules/compute/virtual_machine_scale_set
Azure Resources: azurecaf_name, azurerm_key_vault_certificate, azurerm_key_vault_secret, azurerm_linux_virtual_machine_scale_set, azurerm_windows_virtual_machine_scale_set, random_password, tls_private_key

Inputs

Name Description Type Required Default Validation
global_settings Global settings object (see module README.md) any yes - -
client_config Client configuration object (see module README.md). any yes - -
application_security_groups any yes - -
application_gateways any yes - -
keyvaults Keyvault to store the SSH public and private keys when not provided by the var.public_key_pem_file or retrieve admin ... any no - -
boot_diagnostics_storage_account (Optional) The Primary/Secondary Endpoint for the Azure Storage Account (general purpose) which should be used to sto... any no {} -
settings The settings for the Azure resource. any yes - -
vnets any yes - -
public_key_pem_file If disable_password_authentication is set to true, ssh authentication is enabled. You can provide a list of file path... any no - -
managed_identities any no {} -
diagnostics any no {} -
public_ip_addresses any no {} -
recovery_vaults any no {} -
availability_sets any no {} -
resource_group Resource group object any yes - -
base_tags Base tags for the resource to be inherited from the resource group. bool yes - -
proximity_placement_groups any no {} -
network_security_groups Require a version 1 NSG definition to be attached to a nic. any no {} -
image_definitions any no {} -
disk_encryption_sets any yes - -
load_balancers any yes - -
lbs any no {} -
lb_backend_address_pool any no {} -

Outputs

Name Description Sensitive Value
id - local.os_type == "linux" ? try(azurerm_linux_virtual_machine_scale_set.vmss["linux"].id, azurerm_linux_virtual_machine_scale_set.vmss_autoscaled["linux"].id, null) : try(azurerm_windows_virtual_machine_scale_set.vmss["windows"].id, null)
os_type - local.os_type
admin_username Local admin username - try(local.admin_username, null) == null ? var.settings.vmss_settings[local.os_type].admin_username : local.admin_username
admin_password_secret_id Local admin password Key Vault secret id - try(azurerm_key_vault_secret.admin_password[local.os_type].id, null)
winrm - local.os_type == "windows" ? {'keyvault_id': '${local.keyvault.id}', 'certificate_url': '${try(azurerm_key_vault_certificate.self_signed_winrm[local.os_type].secret_id, null)}'} : null
ssh_keys - local.create_sshkeys ? {'keyvault_id': '${local.keyvault.id}', 'ssh_private_key_pem': '${azurerm_key_vault_secret.ssh_private_key[local.os_type].name}', 'ssh_public_key_open_ssh': '${azurerm_key_vault_secret.ssh_public_key_openssh[local.os_type].name}', 'ssh_private_key_open_ssh': '${azurerm_key_vault_secret.ssh_public_key_openssh[local.os_type].name}'} : null
identity The identity block of the virtual machine scale set - local.os_type == "linux" ? try(azurerm_linux_virtual_machine_scale_set.vmss["linux"].identity, azurerm_linux_virtual_machine_scale_set.vmss_autoscaled["linux"].identity, null) : try(azurerm_windows_virtual_machine_scale_set.vmss["windows"].identity, null)

Sources

  • modules/compute/virtual_machine_scale_set/keyvault.tf
  • modules/compute/virtual_machine_scale_set/locals.tf
  • modules/compute/virtual_machine_scale_set/locals_virtual_machine_scale_set.tf
  • modules/compute/virtual_machine_scale_set/main.tf
  • modules/compute/virtual_machine_scale_set/managed_identities.tf
  • modules/compute/virtual_machine_scale_set/outputs.tf
  • modules/compute/virtual_machine_scale_set/variables.tf
  • modules/compute/virtual_machine_scale_set/vmss_linux.tf
  • modules/compute/virtual_machine_scale_set/vmss_windows.tf
  • modules/compute/virtual_machine_scale_set/vmss_windows_winrm_self.tf