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