119 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			HCL
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			HCL
		
	
	
	
	
	
| resource "random_string" "vmss_name_prefix" {
 | |
|   length  = 20
 | |
|   special = false
 | |
|   numeric = false
 | |
|   upper   = false
 | |
| }
 | |
| 
 | |
| resource "azurerm_storage_account" "vmss" {
 | |
|   name                     = "${random_string.vmss_name_prefix.result}vmss"
 | |
|   resource_group_name      = azurerm_resource_group.default.name
 | |
|   location                 = azurerm_resource_group.default.location
 | |
|   account_tier             = "Standard"
 | |
|   account_replication_type = "LRS"
 | |
| }
 | |
| 
 | |
| # Vm Scale Set
 | |
| resource "azurerm_virtual_machine_scale_set" "default" {
 | |
|   name                = "${var.name}-vmss"
 | |
|   location            = azurerm_resource_group.default.location
 | |
|   resource_group_name = azurerm_resource_group.default.name
 | |
|   upgrade_policy_mode = "Automatic"
 | |
|   overprovision       = false
 | |
| 
 | |
|   sku {
 | |
|     name     = "Standard_D1_v2"
 | |
|     tier     = "Standard"
 | |
|     capacity = var.cluster_size
 | |
|   }
 | |
| 
 | |
|   storage_profile_image_reference {
 | |
|     publisher = "MicrosoftWindowsServer"
 | |
|     offer     = "WindowsServer"
 | |
|     sku       = "2019-Datacenter-with-Containers"
 | |
|     version   = "latest"
 | |
|   }
 | |
| 
 | |
|   storage_profile_os_disk {
 | |
|     name              = ""
 | |
|     caching           = "ReadWrite"
 | |
|     create_option     = "FromImage"
 | |
|     managed_disk_type = "Standard_LRS"
 | |
|   }
 | |
| 
 | |
|   storage_profile_data_disk {
 | |
|     lun           = 0
 | |
|     caching       = "ReadWrite"
 | |
|     create_option = "Empty"
 | |
|     disk_size_gb  = 10
 | |
|   }
 | |
| 
 | |
|   os_profile {
 | |
|     computer_name_prefix = "sfvm"
 | |
|     admin_username       = var.admin_username
 | |
|     admin_password       = var.admin_password
 | |
|   }
 | |
| 
 | |
|   os_profile_secrets {
 | |
|     source_vault_id = azurerm_key_vault.cluster.id
 | |
| 
 | |
|     vault_certificates {
 | |
|       certificate_url   = "${azurerm_key_vault.cluster.vault_uri}secrets/${azurerm_key_vault_certificate.cluster.name}/${azurerm_key_vault_certificate.cluster.version}"
 | |
|       certificate_store = "My"
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   # These default to on if not specified, causing terraform to always want to make changes
 | |
|   os_profile_windows_config {
 | |
|     enable_automatic_upgrades = true
 | |
|     provision_vm_agent        = true
 | |
|   }
 | |
| 
 | |
|   boot_diagnostics {
 | |
|     enabled     = true
 | |
|     storage_uri = azurerm_storage_account.vmss.primary_blob_endpoint
 | |
|   }
 | |
| 
 | |
|   network_profile {
 | |
|     name    = "NetworkProfile"
 | |
|     primary = true
 | |
| 
 | |
|     ip_configuration {
 | |
|       primary                                = true
 | |
|       name                                   = "IPConfiguration"
 | |
|       subnet_id                              = azurerm_subnet.sf.id
 | |
|       load_balancer_backend_address_pool_ids = ["${azurerm_lb_backend_address_pool.sf.id}"]
 | |
|       load_balancer_inbound_nat_rules_ids    = ["${azurerm_lb_nat_pool.sf[0].id}"]
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   extension {
 | |
|     name                 = "ServiceFabricNodeVmExt_vmDefault" # This extension connects vms to the cluster.
 | |
|     publisher            = "Microsoft.Azure.ServiceFabric"
 | |
|     type                 = "ServiceFabricNode"
 | |
|     type_handler_version = "1.0"
 | |
| 
 | |
|     settings = <<EOT
 | |
|       {
 | |
|         "certificate": {
 | |
|           "thumbprint": "${azurerm_key_vault_certificate.cluster.thumbprint}",
 | |
|           "x509StoreName": "My"
 | |
|         },
 | |
|         "clusterEndpoint": "${azurerm_service_fabric_cluster.default.cluster_endpoint}",
 | |
|         "nodeTypeRef": "default",
 | |
|         "dataPath": "D:\\SvcFab",
 | |
|         "enableParallelJobs": true,
 | |
|         "durabilityLevel": "Bronze",
 | |
|         "nicPrefixOverride": "10.0.1.0/24"
 | |
|       }
 | |
|     EOT
 | |
| 
 | |
|     protected_settings = <<EOT
 | |
|       {
 | |
|         "StorageAccountKey1": "${azurerm_storage_account.sf.primary_access_key}"
 | |
|       }
 | |
|     EOT
 | |
|   }
 | |
| }
 | |
| 
 |