Build phase 0Shipped
Terraform Foundation
A clean, documented, opinionated Terraform module library: the infrastructure-as-code base everything else is provisioned from.
Before there's a cluster, there's the code that builds clusters. The tf-modules repo is a reusable module library, written to be provider-agnostic where it can be, that demonstrates IaC maturity independently of the Civo project that consumes it.
Deliverables
- Civo Kubernetes cluster module: provisions a K3s cluster with configurable node pools, firewall rules, and taints/tolerations.
- Networking module: VPC / network configuration and DNS setup.
- Namespaces & RBAC module: base namespace structure, service accounts, and role bindings for the platform components.
- Helm release module: a generic module for deploying charts with configurable values, reused by Argo CD, Prometheus, Grafana, and Istio.
- Remote state: backend configuration on Civo object storage.
Definition of done
Every module ships a
README with a usage example, variables.tf with descriptions and defaults, outputs.tf, and a working example under examples/. CI passes on every PR: fmt, validate, tflint, and tfsec. Tagged v0.1.0 once everything works end to end.Tasks
TF-001TF-002TF-003TF-004TF-005TF-006TF-007TF-008TF-009TF-010
Write-up
“Building a reusable Terraform module library, and why I stopped copy-pasting infrastructure code.”