mirror of
https://github.com/ghndrx/GSP662.git
synced 2026-02-10 06:54:58 +00:00
72 lines
1.8 KiB
HCL
72 lines
1.8 KiB
HCL
provider "google" {
|
|
project = var.project_id
|
|
region = var.region
|
|
}
|
|
|
|
resource "google_compute_network" "vpc_network" {
|
|
name = var.vpc_name
|
|
auto_create_subnetworks = false
|
|
}
|
|
|
|
resource "google_compute_subnetwork" "subnet" {
|
|
name = var.subnet_name
|
|
network = google_compute_network.vpc_network.self_link
|
|
ip_cidr_range = var.subnet_cidr_range
|
|
}
|
|
|
|
resource "google_compute_router" "router" {
|
|
name = var.router_name
|
|
region = var.region
|
|
network = google_compute_network.vpc_network.self_link
|
|
|
|
bgp {
|
|
asn = 64514
|
|
}
|
|
|
|
dynamic "interface" {
|
|
for_each = var.router_interfaces
|
|
content {
|
|
name = interface.value.name
|
|
ip_address = interface.value.ip_address
|
|
management = interface.value.management
|
|
management_config = interface.value.management_config
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "google_compute_address" "nat_ip" {
|
|
name = var.nat_ip_name
|
|
region = var.region
|
|
address_type = "EXTERNAL"
|
|
}
|
|
|
|
resource "google_compute_instance" "nat_instance" {
|
|
name = var.nat_instance_name
|
|
machine_type = var.machine_type
|
|
zone = var.zone
|
|
tags = ["nat"]
|
|
boot_disk {
|
|
initialize_params {
|
|
image = var.image_name
|
|
}
|
|
}
|
|
network_interface {
|
|
network = google_compute_network.vpc_network.self_link
|
|
access_config {
|
|
nat_ip = google_compute_address.nat_ip.address
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "google_compute_route" "nat_route" {
|
|
name = var.nat_route_name
|
|
destination_range = var.destination_range
|
|
next_hop_instance = google_compute_instance.nat_instance.self_link
|
|
next_hop_instance_zone = var.zone
|
|
tags = ["nat"]
|
|
}
|
|
|
|
output "nat_ip_address" {
|
|
value = google_compute_address.nat_ip.address
|
|
}
|