No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-02 12:05:13 -05:00
.github chore: add pull request template 2026-08-17 14:23:53 -05:00
apps feat(aws): role to create infra in aws 2026-08-30 19:36:46 -05:00
modules feat(terraform): central events url 2026-07-27 11:49:25 -06:00
.gitignore adding flake nix 2023-12-02 16:06:36 -06:00
atlantis.yaml feat(aws): role to create infra in aws 2026-08-30 19:36:46 -05:00
CLAUDE.md fix(terraform): remove old workspace 2026-07-10 11:28:03 -06:00
README.md fix(terraform): remove old workspace 2026-07-10 11:28:03 -06:00

Terraform Manifests

Modules and manifests used to manage my homelab and cloud infrastructure.

Structure

  • apps/ — deployable, per-provider configurations. Each app is one Terraform Cloud workspace with its own state. Files are named by content (records.tf, repos.tf, …); repeated resources use a locals map + for_each.
  • modules/ — reusable, environment-agnostic components consumed by apps.

Apps

App Provider(s) Manages
github integrations/github Repositories, webhooks, Actions secrets
cloudflare cloudflare/cloudflare DNS records for internal services
aws hashicorp/aws KMS, S3, general AWS resources
aws_localstack hashicorp/aws LocalStack (VPC, EC2, S3) emulation
vault hashicorp/vault Mounts, ACL policies, auth backends
signoz SigNoz/signoz Dashboards & alerts (stub)
grafana grafana/grafana Folders, contact points, notif. policies
containers kreuzwerker/docker Local Docker containers
demo — Scratch / testing

Each app has its own README.md with usage, auth, and import notes.

Modules

Module Purpose
github-repo Full-featured GitHub repository management
vault-secrets Read secrets from Vault KV (v1/v2)
containers Docker image + container
localstack/vpc VPC for LocalStack

State & workflow

  • State is managed in HashiCorp Terraform Cloud — one workspace per app (orgs: mvaldes for homelab).
  • CI/CD is Atlantis: plan on PR, apply + automerge on approval.
  • Provider auth is via environment variables set as sensitive workspace vars (e.g. GITHUB_TOKEN, CLOUDFLARE_API_TOKEN, VAULT_TOKEN, SIGNOZ_ACCESS_TOKEN).

Development

cd apps/<app>
terraform init
terraform plan

See CLAUDE.md for conventions and detailed structure.