lab
I maintain a home server stack to mainly to experiment with development tools and self hosted web services.
Core Technologies
Consul
Provides central service registry, health checks, and DNS lookups for nodes and services. Makes clustering nomad agents more straightforward.1
Nomad
Orchestrate deploying services by executing nomad job specs. Currently managed with a combination of terraform, shell scripts, levant templating, code generation, Makefiles, and a Gitlab CI Pipeline on a locally hosted Gitlab instance. This is where I’m trying to clean things up, mainly for the sake of my own sanity.2
Terraform
Currently used to create virtual machines in Proxmox. Maintain a custom module to abstract most default configuration out.3
For example, to create a new VM with 8GB of ram and 8 CPU cores, I would add this
block to my main.tf
file.
module "newdevbox" {
count = 1
source = "./modules/ubuntu-vm"
name = "newdevbox"
vmid = 120
cores = 8
mem = 8196
ip_address = "10.1.100.100"
}
Ansible
Mainly used to provision virtual machines. Maintain a number of custom roles that handle different pieces of the configuration. Various playbooks handling executing roles on specific targets.4
For example, to provision a new cluster of VMs I could run this short playbook (after tweaking some IP address values in some of the role files).
---
- name: Setup cluster
hosts:
- servers
- workers
roles:
- hashi
- consul
- nomad
- docker
tags:
- setup
Hardware
Servers
These two Dell servers run LXC containers and VMs and are the main compute resource.
Storage
These two Synology NAS units store most of everything, they’re also configured to back eachother up. Provide shared folders accessed elsewhere via NFS.
MISC
The NUC provides a compute resource not running Proxmox.