# provider "azurerm" { # subscription_id = "${var.subscription_id}" # client_id = "${var.client_id}" # client_secret = "${var.client_secret}" # tenant_id = "${var.tenant_id}" # } resource "azurerm_resource_group" "rg" { name = "${var.resource_group}" location = "${var.location}" } resource "azurerm_virtual_network" "vnet" { name = "${var.resource_group}vnet" location = "${azurerm_resource_group.rg.location}" address_space = ["10.0.0.0/16"] resource_group_name = "${azurerm_resource_group.rg.name}" } resource "azurerm_subnet" "subnet" { name = "subnet" address_prefix = "10.0.0.0/24" resource_group_name = "${azurerm_resource_group.rg.name}" virtual_network_name = "${azurerm_virtual_network.vnet.name}" } resource "azurerm_public_ip" "pip" { name = "${var.hostname}-pip" location = "${azurerm_resource_group.rg.location}" resource_group_name = "${azurerm_resource_group.rg.name}" public_ip_address_allocation = "Dynamic" domain_name_label = "${var.hostname}" } resource "azurerm_lb" "lb" { name = "LoadBalancer" location = "${azurerm_resource_group.rg.location}" resource_group_name = "${azurerm_resource_group.rg.name}" depends_on = ["azurerm_public_ip.pip"] frontend_ip_configuration { name = "LBFrontEnd" public_ip_address_id = "${azurerm_public_ip.pip.id}" } } resource "azurerm_lb_backend_address_pool" "backlb" { name = "BackEndAddressPool" resource_group_name = "${azurerm_resource_group.rg.name}" loadbalancer_id = "${azurerm_lb.lb.id}" } resource "azurerm_lb_nat_pool" "np" { resource_group_name = "${azurerm_resource_group.rg.name}" loadbalancer_id = "${azurerm_lb.lb.id}" name = "NATPool" protocol = "Tcp" frontend_port_start = 50000 frontend_port_end = 50119 backend_port = 22 frontend_ip_configuration_name = "LBFrontEnd" } resource "azurerm_storage_account" "stor" { name = "${var.resource_group}stor" location = "${azurerm_resource_group.rg.location}" resource_group_name = "${azurerm_resource_group.rg.name}" account_type = "${var.storage_account_type}" } resource "azurerm_storage_container" "vhds" { name = "vhds" resource_group_name = "${azurerm_resource_group.rg.name}" storage_account_name = "${azurerm_storage_account.stor.name}" container_access_type = "blob" } resource "azurerm_virtual_machine_scale_set" "scaleset" { name = "autoscalewad" location = "${azurerm_resource_group.rg.location}" resource_group_name = "${azurerm_resource_group.rg.name}" upgrade_policy_mode = "Manual" overprovision = true depends_on = ["azurerm_lb.lb", "azurerm_virtual_network.vnet"] sku { name = "${var.vm_sku}" tier = "Standard" capacity = "${var.instance_count}" } os_profile { computer_name_prefix = "${var.vmss_name}" admin_username = "${var.admin_username}" admin_password = "${var.admin_password}" } os_profile_linux_config { disable_password_authentication = false } network_profile { name = "${var.hostname}-nic" primary = true ip_configuration { name = "${var.hostname}ipconfig" subnet_id = "${azurerm_subnet.subnet.id}" load_balancer_backend_address_pool_ids = ["${azurerm_lb_backend_address_pool.backlb.id}"] load_balancer_inbound_nat_rules_ids = ["${element(azurerm_lb_nat_pool.np.*.id, count.index)}"] } } storage_profile_os_disk { name = "${var.hostname}" caching = "ReadWrite" create_option = "FromImage" vhd_containers = ["${azurerm_storage_account.stor.primary_blob_endpoint}${azurerm_storage_container.vhds.name}"] } storage_profile_image_reference { publisher = "${var.image_publisher}" offer = "${var.image_offer}" sku = "${var.ubuntu_os_version}" version = "latest" } }