mirror of
https://github.com/BagelHole/DevOps-Security-Agent-Skills.git
synced 2026-08-22 12:49:53 +02:00
115 lines
2.8 KiB
Terraform
115 lines
2.8 KiB
Terraform
# GCP VPC Module Template
|
|
|
|
variable "network_name" {
|
|
description = "VPC network name"
|
|
type = string
|
|
default = "main"
|
|
}
|
|
|
|
# VPC Network
|
|
resource "google_compute_network" "main" {
|
|
name = "${var.project_name}-${var.environment}-vpc"
|
|
auto_create_subnetworks = false
|
|
project = var.project_id
|
|
}
|
|
|
|
# Public Subnet
|
|
resource "google_compute_subnetwork" "public" {
|
|
name = "${var.project_name}-${var.environment}-public"
|
|
ip_cidr_range = "10.0.1.0/24"
|
|
region = var.region
|
|
network = google_compute_network.main.id
|
|
project = var.project_id
|
|
|
|
secondary_ip_range {
|
|
range_name = "gke-pods"
|
|
ip_cidr_range = "10.1.0.0/16"
|
|
}
|
|
|
|
secondary_ip_range {
|
|
range_name = "gke-services"
|
|
ip_cidr_range = "10.2.0.0/20"
|
|
}
|
|
}
|
|
|
|
# Private Subnet
|
|
resource "google_compute_subnetwork" "private" {
|
|
name = "${var.project_name}-${var.environment}-private"
|
|
ip_cidr_range = "10.0.2.0/24"
|
|
region = var.region
|
|
network = google_compute_network.main.id
|
|
project = var.project_id
|
|
private_ip_google_access = true
|
|
}
|
|
|
|
# Cloud Router (for NAT)
|
|
resource "google_compute_router" "main" {
|
|
name = "${var.project_name}-${var.environment}-router"
|
|
region = var.region
|
|
network = google_compute_network.main.id
|
|
project = var.project_id
|
|
}
|
|
|
|
# Cloud NAT
|
|
resource "google_compute_router_nat" "main" {
|
|
name = "${var.project_name}-${var.environment}-nat"
|
|
router = google_compute_router.main.name
|
|
region = var.region
|
|
project = var.project_id
|
|
nat_ip_allocate_option = "AUTO_ONLY"
|
|
source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
|
|
}
|
|
|
|
# Firewall - Allow SSH
|
|
resource "google_compute_firewall" "allow_ssh" {
|
|
name = "${var.project_name}-${var.environment}-allow-ssh"
|
|
network = google_compute_network.main.name
|
|
project = var.project_id
|
|
|
|
allow {
|
|
protocol = "tcp"
|
|
ports = ["22"]
|
|
}
|
|
|
|
source_ranges = ["0.0.0.0/0"]
|
|
target_tags = ["ssh"]
|
|
}
|
|
|
|
# Firewall - Allow Internal
|
|
resource "google_compute_firewall" "allow_internal" {
|
|
name = "${var.project_name}-${var.environment}-allow-internal"
|
|
network = google_compute_network.main.name
|
|
project = var.project_id
|
|
|
|
allow {
|
|
protocol = "icmp"
|
|
}
|
|
|
|
allow {
|
|
protocol = "tcp"
|
|
ports = ["0-65535"]
|
|
}
|
|
|
|
allow {
|
|
protocol = "udp"
|
|
ports = ["0-65535"]
|
|
}
|
|
|
|
source_ranges = ["10.0.0.0/8"]
|
|
}
|
|
|
|
output "network_name" {
|
|
value = google_compute_network.main.name
|
|
}
|
|
|
|
output "network_id" {
|
|
value = google_compute_network.main.id
|
|
}
|
|
|
|
output "subnet_ids" {
|
|
value = {
|
|
public = google_compute_subnetwork.public.id
|
|
private = google_compute_subnetwork.private.id
|
|
}
|
|
}
|