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.tfmodules/compute/virtual_machine_scale_set/locals.tfmodules/compute/virtual_machine_scale_set/locals_virtual_machine_scale_set.tfmodules/compute/virtual_machine_scale_set/main.tfmodules/compute/virtual_machine_scale_set/managed_identities.tfmodules/compute/virtual_machine_scale_set/outputs.tfmodules/compute/virtual_machine_scale_set/variables.tfmodules/compute/virtual_machine_scale_set/vmss_linux.tfmodules/compute/virtual_machine_scale_set/vmss_windows.tfmodules/compute/virtual_machine_scale_set/vmss_windows_winrm_self.tf