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  }