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
This commit is contained in:
2026-02-01 23:14:46 -06:00
parent 02beae23a0
commit b9be45dc71
74 changed files with 2110 additions and 2 deletions
+45
View File
@@ -0,0 +1,45 @@
---
# Global variables for hobbs.farm
domain: hobbs.farm
timezone: America/Chicago
dns_server: 192.168.86.45
gateway: 192.168.86.1
nas_ip: 192.168.86.30
nas_share: "//192.168.86.30/data"
# SSH
ansible_user: glyptic
ansible_ssh_private_key_file: ~/.ssh/id_docker_server
ansible_python_interpreter: /usr/bin/python3
# Docker network
docker_network_name: homelab_network
# Traefik
traefik_acme_email: "{{ vault_acme_email }}"
cloudflare_api_token: "{{ vault_cloudflare_api_token }}"
# NAS mounts
nas_media_path: /mnt/nas/media
nas_backup_path: /mnt/nas/backups
nas_docker_path: /mnt/nas/docker
# Common packages
common_packages:
- htop
- iotop
- curl
- wget
- git
- jq
- unzip
- net-tools
- ncdu
- tmux
- rsync
- lsof
# NTP
ntp_servers:
- 0.us.pool.ntp.org
- 1.us.pool.ntp.org
+9
View File
@@ -0,0 +1,9 @@
---
docker_compose_base: /data/docker-compose
docker_data_dir: /data
docker_log_driver: json-file
docker_log_max_size: 10m
docker_log_max_file: "3"
docker_install_compose_plugin: true
docker_users:
- glyptic
+7
View File
@@ -0,0 +1,7 @@
---
prometheus_retention: 30d
prometheus_scrape_interval: 15s
grafana_admin_password: "{{ vault_grafana_admin_password }}"
alertmanager_smtp_host: "{{ vault_smtp_host }}"
alertmanager_smtp_from: "alerts@hobbs.farm"
alertmanager_slack_webhook: "{{ vault_slack_webhook | default('') }}"