1214f72958405c03d87fe3325e7fe435494510c9
Ansible Homelab - hobbs.farm
Infrastructure-as-Code for the hobbs.farm homelab environment.
Architecture
| Host | IP | Role | OS |
|---|---|---|---|
| Peggy | 192.168.86.45 | Primary Docker host (48+ containers) | Ubuntu 24.04 |
| Bart | 192.168.86.181 | Frigate NVR | Ubuntu |
| Yoda | 192.168.86.31 | BlueIris NVR | Windows |
| NAS | 192.168.86.30 | 16TB storage (SMB/NFS) | Synology |
| Firewalla | 192.168.86.1 | Gateway / Firewall | Firewalla |
Quick Start
# Install Galaxy requirements
ansible-galaxy install -r requirements.yml
# Test connectivity
ansible all -m ping
# Full deployment
ansible-playbook playbooks/site.yml
# Deploy specific stack
ansible-playbook playbooks/core-infrastructure.yml
ansible-playbook playbooks/monitoring.yml
ansible-playbook playbooks/media.yml
# Maintenance
ansible-playbook playbooks/maintenance/health-check.yml
ansible-playbook playbooks/maintenance/update-containers.yml
ansible-playbook playbooks/maintenance/backup.yml
Tags
All playbooks support selective execution via tags:
ansible-playbook playbooks/site.yml --tags traefik
ansible-playbook playbooks/site.yml --tags monitoring
ansible-playbook playbooks/site.yml --tags media
Available tags: common, docker, traefik, vaultwarden, monitoring, grafana, prometheus, alertmanager, media, jellyfin, sonarr, radarr, matrix, homeassistant, esphome, frigate, adguard, gitea, semaphore, openclaw, security, backup
Vault
Sensitive variables are referenced via vault_ prefix and should be stored in an encrypted vault file:
ansible-vault create inventory/group_vars/vault.yml
ansible-vault edit inventory/group_vars/vault.yml
Required vault variables:
vault_acme_email- Let's Encrypt emailvault_cloudflare_api_token- Cloudflare DNS API tokenvault_grafana_admin_password- Grafana admin passwordvault_vaultwarden_admin_token- Vaultwarden admin tokenvault_matrix_shared_secret- Matrix Synapse registration secretvault_smtp_host- SMTP relay hostvault_slack_webhook- Slack/Discord webhook for alertsvault_gitea_db_password- Gitea PostgreSQL passwordvault_semaphore_db_password- Semaphore DB passwordvault_nas_smb_password- NAS SMB credentials
Directory Structure
├── ansible.cfg # Ansible configuration
├── requirements.yml # Galaxy dependencies
├── inventory/ # Hosts and variables
├── playbooks/ # Orchestration playbooks
│ └── maintenance/ # Maintenance tasks
└── roles/ # Reusable roles
Description
Languages
Jinja
73.3%
HCL
26.7%