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 st... 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 pat... 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