https://github.com/rayhanadev/iac
Configuration for my Docker Swarm homelab. Uses Ansible and Terraform to provision and orchestrate setup.
https://github.com/rayhanadev/iac
Last synced: 17 days ago
JSON representation
Configuration for my Docker Swarm homelab. Uses Ansible and Terraform to provision and orchestrate setup.
- Host: GitHub
- URL: https://github.com/rayhanadev/iac
- Owner: rayhanadev
- Created: 2025-06-02T04:34:45.000Z (26 days ago)
- Default Branch: main
- Last Pushed: 2025-06-03T00:52:23.000Z (25 days ago)
- Last Synced: 2025-06-03T16:13:23.969Z (24 days ago)
- Language: HCL
- Size: 18.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐๏ธ Homelab Infrastructure-as-Code (IaC)
This repository manages a fully self-hosted, GitOps-style infrastructure stack using **Terraform** for provisioning and **Ansible** for configuration and orchestration.
## Overview
### Provisioning โ Terraform
- **GCP VM**: Acts as a public gateway running Caddy
- **Cloudflare**: DNS records and Zero Trust access
- **Tailscale**: Private networking and access control (ACLs)### Configuration โ Ansible
- **Docker Swarm**: Set up across 4 Raspberry Pi nodes
- **MicroCeph**: Lightweight Ceph cluster for shared block/filesystem storage
- **Caddy**: HTTPS ingress on the GCP gateway
- **Tailscale**: Installed and joined to the tailnet on all nodes
- **Stacks**: Docker Swarm apps like Uptime Kuma, Grafana, Umami, etc.## Directory Structure
```plaintext
.
โโโ scripts # Utility scripts (provisioning, deploying, etc.)
โ โโโ 01_provison.sh
โ โโโ 02_configure.sh
โ โโโ 03_deploy_stacks.sh
โ โโโ 04_deploy_caddy.sh
โโโ ansible # Configuration management
โ โโโ group_vars
โ โโโ inventory
โ โโโ playbooks
โ โโโ roles
โ โ โโโ caddy
โ โ โโโ docker
โ โ โโโ microceph
โ โ โโโ stacks
โโโ terraform # Infrastructure provisioning
โโโ cloudflare
โโโ gcp
โโโ tailscale
โโโ main.tf
โโโ variables.tf
````## Prerequisites
- [Terraform v1.8+](https://developer.hashicorp.com/terraform/downloads)
- [Ansible v2.16+](https://docs.ansible.com/)## Scripts
You can automate everything with:
```bash
scripts/01_provision.sh # Terraform: provision infra
scripts/02_configure.sh # Ansible: configure all nodes
scripts/03_deploy_stacks.sh # Ansible: deploy swarm stacks
scripts/04_deploy_caddy.sh # Ansible: deploy Caddy ingress
```## ๐งน TODO
* [ ] Add log aggregation (e.g. Loki, Promtail)
* [ ] Add automatic backups