# provider "azurerm" { # subscription_id = "REPLACE-WITH-YOUR-SUBSCRIPTION-ID" # client_id = "REPLACE-WITH-YOUR-CLIENT-ID" # client_secret = "REPLACE-WITH-YOUR-CLIENT-SECRET" # tenant_id = "REPLACE-WITH-YOUR-TENANT-ID" # } resource "azurerm_resource_group" "rg" { name = "${var.resource_group}" location = "${var.location}" } resource "azurerm_storage_account" "stor" { name = "${var.dns_name}stor" location = "${var.location}" resource_group_name = "${azurerm_resource_group.rg.name}" account_type = "${var.storage_account_type}" } resource "azurerm_availability_set" "avset" { name = "${var.dns_name}avset" location = "${var.location}" resource_group_name = "${azurerm_resource_group.rg.name}" platform_fault_domain_count = 2 platform_update_domain_count = 2 managed = true } resource "azurerm_public_ip" "lbpip" { name = "${var.rg_prefix}-ip" location = "${var.location}" resource_group_name = "${azurerm_resource_group.rg.name}" public_ip_address_allocation = "dynamic" domain_name_label = "${var.lb_ip_dns_name}" } resource "azurerm_virtual_network" "vnet" { name = "${var.virtual_network_name}" location = "${var.location}" address_space = ["${var.address_space}"] resource_group_name = "${azurerm_resource_group.rg.name}" } resource "azurerm_subnet" "subnet" { name = "${var.rg_prefix}subnet" virtual_network_name = "${azurerm_virtual_network.vnet.name}" resource_group_name = "${azurerm_resource_group.rg.name}" address_prefix = "${var.subnet_prefix}" } resource "azurerm_lb" "lb" { resource_group_name = "${azurerm_resource_group.rg.name}" name = "${var.rg_prefix}lb" location = "${var.location}" frontend_ip_configuration { name = "LoadBalancerFrontEnd" public_ip_address_id = "${azurerm_public_ip.lbpip.id}" } } resource "azurerm_lb_backend_address_pool" "backend_pool" { resource_group_name = "${azurerm_resource_group.rg.name}" loadbalancer_id = "${azurerm_lb.lb.id}" name = "BackendPool1" } resource "azurerm_lb_nat_rule" "tcp" { resource_group_name = "${azurerm_resource_group.rg.name}" loadbalancer_id = "${azurerm_lb.lb.id}" name = "RDP-VM-${count.index}" protocol = "tcp" frontend_port = "5000${count.index + 1}" backend_port = 3389 frontend_ip_configuration_name = "LoadBalancerFrontEnd" count = 2 } resource "azurerm_lb_rule" "lb_rule" { resource_group_name = "${azurerm_resource_group.rg.name}" loadbalancer_id = "${azurerm_lb.lb.id}" name = "LBRule" protocol = "tcp" frontend_port = 80 backend_port = 80 frontend_ip_configuration_name = "LoadBalancerFrontEnd" enable_floating_ip = false backend_address_pool_id = "${azurerm_lb_backend_address_pool.backend_pool.id}" idle_timeout_in_minutes = 5 probe_id = "${azurerm_lb_probe.lb_probe.id}" depends_on = ["azurerm_lb_probe.lb_probe"] } resource "azurerm_lb_probe" "lb_probe" { resource_group_name = "${azurerm_resource_group.rg.name}" loadbalancer_id = "${azurerm_lb.lb.id}" name = "tcpProbe" protocol = "tcp" port = 80 interval_in_seconds = 5 number_of_probes = 2 } resource "azurerm_network_interface" "nic" { name = "nic${count.index}" location = "${var.location}" resource_group_name = "${azurerm_resource_group.rg.name}" count = 2 ip_configuration { name = "ipconfig${count.index}" subnet_id = "${azurerm_subnet.subnet.id}" private_ip_address_allocation = "Dynamic" load_balancer_backend_address_pools_ids = ["${azurerm_lb_backend_address_pool.backend_pool.id}"] load_balancer_inbound_nat_rules_ids = ["${element(azurerm_lb_nat_rule.tcp.*.id, count.index)}"] } } resource "azurerm_virtual_machine" "vm" { name = "vm${count.index}" location = "${var.location}" resource_group_name = "${azurerm_resource_group.rg.name}" availability_set_id = "${azurerm_availability_set.avset.id}" vm_size = "${var.vm_size}" network_interface_ids = ["${element(azurerm_network_interface.nic.*.id, count.index)}"] count = 2 storage_image_reference { publisher = "${var.image_publisher}" offer = "${var.image_offer}" sku = "${var.image_sku}" version = "${var.image_version}" } storage_os_disk { name = "osdisk${count.index}" create_option = "FromImage" } os_profile { computer_name = "${var.hostname}" admin_username = "${var.admin_username}" admin_password = "${var.admin_password}" } }