Implement bridges and fillout readme with current state
This commit is contained in:
7
environments/nonprod/providers.tf
Normal file
7
environments/nonprod/providers.tf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
provider "proxmox" {
|
||||||
|
endpoint = var.proxmox_endpoint
|
||||||
|
api_token = var.proxmox_api_token
|
||||||
|
|
||||||
|
# Set to true if using a self-signed certificate (common on home labs)
|
||||||
|
insecure = var.proxmox_insecure
|
||||||
|
}
|
||||||
10
environments/nonprod/terraform.tf
Normal file
10
environments/nonprod/terraform.tf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">= 1.0"
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
proxmox = {
|
||||||
|
source = "bpg/proxmox"
|
||||||
|
version = "~> 0.73"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
35
modules/networking/README.md
Normal file
35
modules/networking/README.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Module: networking
|
||||||
|
|
||||||
|
Creates the internal Linux bridge network segments on a Proxmox node. These bridges are purely virtual — no physical NIC is attached. All inter-segment traffic is routed through a firewall VM (OPNsense).
|
||||||
|
|
||||||
|
## Segments
|
||||||
|
|
||||||
|
| Bridge | CIDR | Purpose |
|
||||||
|
|--------|------|---------|
|
||||||
|
| management | 10.10.10.0/24 | Proxmox API access and admin tools. Proxmox host holds 10.10.10.1. |
|
||||||
|
| services | 10.10.20.0/24 | General workload VMs and containers. |
|
||||||
|
| dmz | 10.10.30.0/24 | Externally exposed workloads (e.g. web servers). |
|
||||||
|
| isolated | 10.10.40.0/24 | Lab and test workloads. No outbound access by default. |
|
||||||
|
|
||||||
|
The Proxmox host has no IP on services, dmz, or isolated — VMs on those segments have no direct path to the hypervisor.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
module "networking" {
|
||||||
|
source = "../../modules/networking"
|
||||||
|
|
||||||
|
proxmox_node_name = "pve"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Inputs
|
||||||
|
|
||||||
|
| Name | Type | Description |
|
||||||
|
|------|------|-------------|
|
||||||
|
| proxmox_node_name | string | Name of the Proxmox node to create bridges on. |
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- After apply, Proxmox automatically reloads the network configuration — no manual intervention required.
|
||||||
|
- `Sys.Modify` must be granted to the Terraform API token role to manage node network interfaces.
|
||||||
29
modules/networking/main.tf
Normal file
29
modules/networking/main.tf
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
resource "proxmox_network_linux_bridge" "management" {
|
||||||
|
node_name = var.proxmox_node_name
|
||||||
|
name = "management"
|
||||||
|
|
||||||
|
address = "10.10.10.1/24"
|
||||||
|
|
||||||
|
comment = "Terraform managed Linux bridge for Proxmox API access and admin tools"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "proxmox_network_linux_bridge" "services" {
|
||||||
|
node_name = var.proxmox_node_name
|
||||||
|
name = "services"
|
||||||
|
|
||||||
|
comment = "Terraform managed Linux bridge for general workload VMs and containers"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "proxmox_network_linux_bridge" "dmz" {
|
||||||
|
node_name = var.proxmox_node_name
|
||||||
|
name = "dmz"
|
||||||
|
|
||||||
|
comment = "Terraform managed Linux bridge for externally exposed VMs and containers (e.g. web servers)"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "proxmox_network_linux_bridge" "isolated" {
|
||||||
|
node_name = var.proxmox_node_name
|
||||||
|
name = "isolated"
|
||||||
|
|
||||||
|
comment = "Terraform managed Linux bridge for Lab/test VMs and containers with no external connectivity"
|
||||||
|
}
|
||||||
7
modules/networking/terraform.tf
Normal file
7
modules/networking/terraform.tf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
proxmox = {
|
||||||
|
source = "bpg/proxmox"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
4
modules/networking/variables.tf
Normal file
4
modules/networking/variables.tf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
variable "proxmox_node_name" {
|
||||||
|
description = "Name of the Proxmox node to manage resources on"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user