-
Notifications
You must be signed in to change notification settings - Fork 0
/
lb_web.tf
104 lines (90 loc) · 3.93 KB
/
lb_web.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# azure load balancer and backend pool
# Availability Zones are only supported with a Standard SKU and in select regions at this time.
# Public LB
resource "azurerm_public_ip" "azlb" {
name = "azlb-pip"
location = var.location
#resource_group_name = var.resource_group_name azurerm_resource_group.ggResourcegroup.name
resource_group_name = azurerm_resource_group.ggResourcegroup.name
allocation_method = "Static"
sku = "Standard"
tags = var.default_tags
}
# The SKU of the Azure Load Balancer. Accepted values are Basic, Standard and Gateway. Defaults to Basic.
resource "azurerm_lb" "azlb" {
name = "azlb-lb"
location = var.location
resource_group_name = var.resource_group_name
sku = "Standard"
frontend_ip_configuration {
name = "azlb-ipconfig"
public_ip_address_id = azurerm_public_ip.azlb.id
#private_ip_address = [10.10.10.10]
}
tags = var.default_tags
}
# When using this resource, the Load Balancer needs to have a FrontEnd IP Configuration Attached
resource "azurerm_lb_rule" "azlb" {
#resource_group_name = var.resource_group_name
loadbalancer_id = azurerm_lb.azlb.id
name = "azlb-lbrule"
protocol = "Tcp"
frontend_port = 80 # Port on which load balancer will receive requests
backend_port = 80 # Port of application on the VM
frontend_ip_configuration_name = "azlb-ipconfig"
backend_address_pool_ids = [azurerm_lb_backend_address_pool.azlb.id]
idle_timeout_in_minutes = 5
probe_id = azurerm_lb_probe.azlb.id
}
resource "azurerm_lb_backend_address_pool" "azlb" {
#resource_group_name = var.resource_group_name
loadbalancer_id = azurerm_lb.azlb.id
name = "azlb-bepool"
}
# Backend Addresses can only be added to a Standard SKU Load Balancer.
resource "azurerm_lb_backend_address_pool_address" "azlbaddr" {
count = 2
name = "azlb-bp-addr${count.index}"
backend_address_pool_id = azurerm_lb_backend_address_pool.azlb.id
virtual_network_id = azurerm_virtual_network.ggVnet01.id
ip_address = azurerm_linux_virtual_machine.gglinuxVM[count.index].private_ip_address
depends_on = [ azurerm_linux_virtual_machine.gglinuxVM ]
}
#vm : use the azurerm_lb_nat_rule resource. #vmss : use the azurerm_lb_nat_pool resource.
/*
resource "azurerm_lb_nat_rule" "azlb" {
count = 2
resource_group_name = var.resource_group_name
loadbalancer_id = azurerm_lb.azlb.id
name = "SSHvm${count.index}" #실제 VM으로 매핑이 안됨
protocol = "Tcp"
frontend_port = "220${count.index + 1}"
backend_port = 22
backend_address_pool_id = azurerm_lb_backend_address_pool.azlb.id
frontend_ip_configuration_name = "azlb-ipconfig"
}
*/
resource "azurerm_lb_nat_rule" "azlbnat" {
#count = 2
resource_group_name = var.resource_group_name
loadbalancer_id = azurerm_lb.azlb.id
name = "SSHvmnat"
protocol = "Tcp"
frontend_port_start = 2201
frontend_port_end = 2203 #연결할 VM 수만큼 포트번호를 지정하여야 한다
backend_port = 22
backend_address_pool_id = azurerm_lb_backend_address_pool.azlb.id
frontend_ip_configuration_name = "azlb-ipconfig"
}
resource "azurerm_lb_probe" "azlb" {
#resource_group_name = var.resource_group_name
loadbalancer_id = azurerm_lb.azlb.id
name = "healthprobe"
protocol = "Http" #Tcp
port = 80
request_path = "/"
}
output "azlb_ip_address" {
description = "Public IP address of the load balancer"
value = azurerm_public_ip.azlb.ip_address
}