github.com/paybyphone/terraform@v0.9.5-0.20170613192930-9706042ddd51/examples/azure-traffic-manager-lb-scale-set/tf_modules/location.tf (about) 1 variable "location" {} 2 variable "resource_prefix" {} 3 variable "webserver_prefix" {} 4 variable "lb_dns_label" {} 5 6 variable "instance_count" {} 7 variable "instance_vmprofile" {} 8 9 variable "image_admin_username" {} 10 variable "image_admin_password" {} 11 12 variable "image_publisher" {} 13 variable "image_offer" {} 14 variable "image_sku" {} 15 variable "image_version" {} 16 17 # Create webserver resource group 18 resource "azurerm_resource_group" "webservers_rg" { 19 name = "${var.resource_prefix}_rg" 20 location = "${var.location}" 21 } 22 23 # Create virtual network 24 resource "azurerm_virtual_network" "webservers_vnet" { 25 name = "webservers_vnet" 26 address_space = ["10.1.0.0/24"] 27 location = "${var.location}" 28 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 29 } 30 31 # Create subnet 32 resource "azurerm_subnet" "webservers_subnet" { 33 name = "webservers_subnet" 34 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 35 virtual_network_name = "${azurerm_virtual_network.webservers_vnet.name}" 36 address_prefix = "10.1.0.0/24" 37 } 38 39 # Create a public ip for the location LB 40 resource "azurerm_public_ip" "webserverpublic_ip" { 41 name = "${var.resource_prefix}_publicip" 42 location = "${var.location}" 43 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 44 public_ip_address_allocation = "static" 45 domain_name_label = "${var.lb_dns_label}" 46 } 47 48 # Create webservers LB 49 resource "azurerm_lb" "webservers_lb" { 50 name = "webservers_lb" 51 location = "${var.location}" 52 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 53 54 frontend_ip_configuration { 55 name = "webserverpublic_ip" 56 public_ip_address_id = "${azurerm_public_ip.webserverpublic_ip.id}" 57 } 58 } 59 60 # Add the backend for webserver LB 61 resource "azurerm_lb_backend_address_pool" "webservers_lb_backend" { 62 name = "webservers_lb_backend" 63 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 64 loadbalancer_id = "${azurerm_lb.webservers_lb.id}" 65 } 66 67 # Create HTTP probe on port 80 68 resource "azurerm_lb_probe" "httpprobe" { 69 name = "httpprobe" 70 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 71 loadbalancer_id = "${azurerm_lb.webservers_lb.id}" 72 protocol = "tcp" 73 port = 80 74 } 75 76 # Create LB rule for HTTP and add to webserver LB 77 resource "azurerm_lb_rule" "webservers_lb_http" { 78 name = "webservers_lb_http" 79 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 80 loadbalancer_id = "${azurerm_lb.webservers_lb.id}" 81 protocol = "Tcp" 82 frontend_port = "80" 83 backend_port = "80" 84 frontend_ip_configuration_name = "webserverpublic_ip" 85 probe_id = "${azurerm_lb_probe.httpprobe.id}" 86 backend_address_pool_id = "${azurerm_lb_backend_address_pool.webservers_lb_backend.id}" 87 } 88 89 # Create storage account 90 resource "azurerm_storage_account" "webservers_sa" { 91 name = "${var.resource_prefix}storage" 92 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 93 location = "${var.location}" 94 account_type = "Standard_LRS" 95 } 96 97 # Create container 98 resource "azurerm_storage_container" "webservers_ct" { 99 name = "vhds" 100 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 101 storage_account_name = "${azurerm_storage_account.webservers_sa.name}" 102 container_access_type = "private" 103 } 104 105 # Configure the scale set using library image 106 resource "azurerm_virtual_machine_scale_set" "webserver_ss" { 107 name = "webserver_ss" 108 location = "${var.location}" 109 resource_group_name = "${azurerm_resource_group.webservers_rg.name}" 110 upgrade_policy_mode = "Manual" 111 112 sku { 113 name = "${var.instance_vmprofile}" 114 tier = "Standard" 115 capacity = "${var.instance_count}" 116 } 117 118 os_profile { 119 computer_name_prefix = "${var.webserver_prefix}" 120 admin_username = "${var.image_admin_username}" 121 admin_password = "${var.image_admin_password}" 122 } 123 124 os_profile_linux_config { 125 disable_password_authentication = false 126 } 127 128 network_profile { 129 name = "web_ss_net_profile" 130 primary = true 131 132 ip_configuration { 133 name = "web_ss_ip_profile" 134 subnet_id = "${azurerm_subnet.webservers_subnet.id}" 135 load_balancer_backend_address_pool_ids = ["${azurerm_lb_backend_address_pool.webservers_lb_backend.id}"] 136 } 137 } 138 139 storage_profile_os_disk { 140 name = "osDiskProfile" 141 caching = "ReadWrite" 142 create_option = "FromImage" 143 vhd_containers = ["${azurerm_storage_account.webservers_sa.primary_blob_endpoint}${azurerm_storage_container.webservers_ct.name}"] 144 } 145 146 storage_profile_image_reference { 147 publisher = "${var.image_publisher}" 148 offer = "${var.image_offer}" 149 sku = "${var.image_sku}" 150 version = "${var.image_version}" 151 } 152 153 extension { 154 name = "CustomScriptForLinux" 155 publisher = "Microsoft.OSTCExtensions" 156 type = "CustomScriptForLinux" 157 type_handler_version = "1.4" 158 settings = <<SETTINGS 159 { 160 "commandToExecute" : "sudo apt-get -y install apache2" 161 } 162 SETTINGS 163 } 164 165 }