-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.tf
104 lines (80 loc) · 2.87 KB
/
main.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
# Configure the Azure provider
provider "azurerm" {
# whilst the `version` attribute is optional, we recommend pinning to a given version of the Provider
version = "=2.24.0"
features {}
}
# Setup all the networks required for the topology
module "networks" {
source = "./modules/networks"
location = var.location
management_ips = var.management_ips
name_prefix = var.name_prefix
management_vnet_prefix = var.management_vnet_prefix
management_subnet = var.management_subnet
olb_private_ip = var.olb_private_ip
firewall_vnet_prefix = var.firewall_vnet_prefix
private_subnet = var.private_subnet
public_subnet = var.public_subnet
vm_management_subnet = var.vm_management_subnet
}
# Create a panorama instance
module "panorama" {
source = "./modules/panorama"
location = var.location
name_prefix = var.name_prefix
subnet_mgmt = module.networks.panorama-mgmt-subnet
username = var.username
password = var.password
panorama_sku = var.panorama_sku
panorama_version = var.panorama_version
# must be between 3 and 24 characters long
name_bootstrap_share = "abbootstrap"
}
# Deploy the inbound load balancer for traffic into the azure environment
module "inbound-lb" {
source = "./modules/lbs"
location = var.location
name_prefix = var.name_prefix
rules = var.rules
}
# Deploy the outbound load balancer for traffic out of the azure environment
module "outbound-lb" {
source = "./modules/olb"
location = var.location
name_prefix = var.name_prefix
private-ip = var.olb_private_ip
backend-subnet = module.networks.subnet-private.id
}
# Create the inbound and outbound VM Scale sets
module "vm-series" {
source = "./modules/vmss"
location = var.location
name_prefix = var.name_prefix
username = var.username
password = var.password
subnet-mgmt = module.networks.subnet-mgmt
subnet-private = module.networks.subnet-private
subnet-public = module.networks.subnet-public
bootstrap-storage-account = module.panorama.bootstrap-storage-account
inbound-bootstrap-share-name = module.panorama.inbound-bootstrap-share-name
outbound-bootstrap-share-name = module.panorama.outbound-bootstrap-share-name
depends_on = [module.panorama]
vhd-container = module.panorama.storage-container-name
private_backend_pool_id = module.outbound-lb.backend-pool-id
public_backend_pool_id = module.inbound-lb.backend-pool-id
vm_series_count = var.vm_series_count
vm_series_sku = var.vm_series_sku
}
# Create a test VNET
module "test-host" {
source = "./modules/test-vnet"
admin-password = var.password
location = var.location
name_prefix = var.name_prefix
peer-vnet = module.networks.transit-vnet
route-table-id = module.networks.outbound-route-table
}
output "PANORAMA-IP" {
value = module.panorama.panorama-publicip
}