128 lines
4.2 KiB
Terraform
128 lines
4.2 KiB
Terraform
|
# 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"
|
||
|
}
|
||
|
}
|