pluto b9be45dc71 Initial Ansible automation for hobbs.farm infrastructure
Complete IaC covering:
- 14 roles: common, docker, traefik, vaultwarden, monitoring, media, matrix,
  home_assistant, frigate, adguard, gitea, semaphore, openclaw, security, backup
- Inventory for all hosts (Peggy, Bart, Yoda, NAS, Firewalla)
- Stack playbooks: core-infrastructure, monitoring, media, communication,
  automation, smarthome, security-hardening
- Maintenance playbooks: update-containers, backup, health-check
- Production Docker Compose templates with Traefik labels
- Security hardening (sysctl, auditd, UFW, fail2ban)
- Automated backups with retention policy
2026-02-01 23:14:46 -06:00

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 email
  • vault_cloudflare_api_token - Cloudflare DNS API token
  • vault_grafana_admin_password - Grafana admin password
  • vault_vaultwarden_admin_token - Vaultwarden admin token
  • vault_matrix_shared_secret - Matrix Synapse registration secret
  • vault_smtp_host - SMTP relay host
  • vault_slack_webhook - Slack/Discord webhook for alerts
  • vault_gitea_db_password - Gitea PostgreSQL password
  • vault_semaphore_db_password - Semaphore DB password
  • vault_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
S
Description
Ansible automation for hobbs.farm infrastructure
Readme 124 KiB
Languages
Jinja 73.3%
HCL 26.7%