Ephemeral Castle: Terraform Modules Detail

Level 3 (Detail) — The 6 reusable Terraform modules for cluster provisioning.

Concept

Each Terragrunt layer maps to a Terraform module under clusters/tazlab-k8s/modules/. Modules are reusable across clusters; cluster-specific configuration comes from live/env.hcl.

Module Inventory

1. secrets-fetcher

FieldValue
Layersecrets (Layer 1)
PurposeFetch bootstrap secrets from operator environment (env vars da Vault o ~/secrets/)
Key inputsPROXMOX_TOKEN_ID, PROXMOX_TOKEN_SECRET, TALOS_SECRETBOX_KEY (from env vars)
Key outputsPROXMOX_TOKEN, TALOS_SECRETBOX_KEY

2. proxmox-talos

FieldValue
Layerplatform (Layer 2)
PurposeCreate Proxmox VMs, bootstrap Talos cluster
Key inputsProxmox token, Talos config
Key outputsKubeconfig, talosconfig

3. k8s-engine

FieldValue
Layerengine (Layer 3)
PurposeInstall ESO v0.10.3, CoreDNS user-managed, bootstrap secrets per Vault
Key inputsvault_ca_cert, vault_eso_token, tailscale_client_id, tailscale_client_secret (stringhe dirette da env vars, non file path)
Key outputsvault-ca-cert Secret, vault-eso-token Secret, tailscale-operator-oauth Secret, CoreDNS, ESO HelmRelease

Il modulo crea 3 K8s Secret Opaque direttamente (senza ExternalSecret né VSO):

  • vault-ca-cert (ca.crt) — per ESO ClusterSecretStore TLS validation
  • vault-eso-token (token) — per ESO authentication su Vault
  • tailscale-operator-oauth (clientId + clientSecret) — per Tailscale Operator join tailnet

4. k8s-networking

FieldValue
Layernetworking (Layer 4a)
PurposeInstall MetalLB v0.14.8, IPAddressPool, memberlist secret
Key inputsMetalLB IP range (192.168.1.240-250)
Key outputsLoadBalancer IP assignment

5. k8s-flux

FieldValue
Layergitops (Layer 4b)
PurposeCreate cluster-vars ConfigMap, bootstrap Flux
Key inputsGitHub token, Flux repo URL
Key outputsFlux reconciliation of tazlab-k8s

6. k8s-storage

FieldValue
Layerstorage (Layer 5)
PurposeInstall Longhorn v1.7.2, StorageClass, S3 backup
Key inputsS3 bucket credentials (da Vault via ExternalSecret)
Key outputstazlab-storage StorageClass

Build Order

1. secrets ──► 2. platform ──► 3. engine ──► 4a. networking ──► 5. storage
                                          └► 4b. gitops (parallel to networking)
6. gcp-services (standalone)

See Also