b1d111a011dbb20d7693799417aca348ad723bc3
Switch from build: to pre-built image (frigate-notify:latest, built from jeremy/frigate-notify Gitea repo). Added volume mount for SQLite DB on NAS, CLIP/Ollama env vars for GPU machine, and corrected MQTT/Matrix hosts to bart (192.168.86.167) since those services are on failover. Deployed 2026-03-08, health check passing.
Hobbs.farm Infrastructure as Code
Enterprise-grade infrastructure management using HashiCorp stack + Ansible.
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ HOBBS.FARM IaC │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ TERRAFORM │────▶│ ANSIBLE │────▶│ NOMAD │ │
│ │ │ │ │ │ │ │
│ │ • Infra │ │ • Config │ │ • Deploy │ │
│ │ • State │ │ • Install │ │ • Scale │ │
│ │ • DNS │ │ • Secure │ │ • Monitor │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │ │ │ │
│ └────────────────┴────────────────┘ │
│ │ │
│ ┌───────────────────────┴───────────────────────┐ │
│ │ HASHICORP STACK │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ NOMAD │ │ CONSUL │ │ VAULT │ │ │
│ │ │ orchest │◄─┤ service │◄─┤ secrets │ │ │
│ │ │ ration │ │ mesh │ │ mgmt │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ HOSTS │ │
│ │ hf-pdocker-01 (primary) hf-pdocker-02 (secondary) │
│ │ 192.168.86.192 192.168.86.45 │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Directory Structure
hobbs-iac/
├── terraform/ # Infrastructure provisioning
│ ├── environments/ # Per-environment configs
│ │ └── prod/
│ ├── modules/ # Reusable modules
│ └── nomad-jobs/ # Nomad job definitions (HCL)
├── ansible/ # Configuration management
│ ├── inventory/ # Host inventory
│ ├── playbooks/ # Automation playbooks
│ ├── roles/ # Ansible roles
│ └── group_vars/ # Variables
├── nomad/ # Nomad-specific configs
│ ├── jobs/ # Job specifications
│ ├── policies/ # ACL policies
│ └── templates/ # Job templates
├── consul/ # Consul configs
│ ├── config/ # Consul configuration
│ └── policies/ # ACL policies
├── vault/ # Vault configs
│ ├── policies/ # Access policies
│ └── secrets/ # Secret definitions (encrypted)
└── scripts/ # Utility scripts
Quick Start
1. Bootstrap Hosts (Ansible)
cd ansible
ansible-playbook -i inventory/hosts.yml playbooks/bootstrap.yml
2. Install HashiCorp Stack
ansible-playbook -i inventory/hosts.yml playbooks/hashicorp-stack.yml
3. Initialize Terraform
cd terraform/environments/prod
terraform init
terraform plan
terraform apply
4. Deploy Services
# Deploy all Nomad jobs
nomad job run ../nomad-jobs/traefik.nomad
nomad job run ../nomad-jobs/monitoring.nomad
# ... etc
Naming Convention
See Naming Convention Standard
| Type | Format | Example |
|---|---|---|
| Physical | hf-p<function>-## |
hf-pdocker-01 |
| Virtual | hf-v<function>-## |
hf-vapp-01 |
| Container | hf-c<function>-## |
hf-cproxy-01 |
| Network | hf-n<function>-## |
hf-nfw-01 |
| Storage | hf-s<function>-## |
hf-snas-01 |
Prerequisites
- Ansible 2.15+
- Terraform 1.5+
- Nomad 1.6+
- Consul 1.16+
- Vault 1.15+
License
Private - Hobbs.farm internal use only
Description
Languages
HTML
50.4%
Python
34.8%
Svelte
7.8%
Shell
3.4%
Dockerfile
1.6%
Other
2%