Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vivshaw/homelab
my mini homelab
https://github.com/vivshaw/homelab
Last synced: 4 days ago
JSON representation
my mini homelab
- Host: GitHub
- URL: https://github.com/vivshaw/homelab
- Owner: vivshaw
- License: mit
- Created: 2023-10-06T02:40:50.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-18T00:40:34.000Z (9 months ago)
- Last Synced: 2024-02-18T01:30:42.636Z (9 months ago)
- Language: HCL
- Size: 44.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# homelab
This is "the Magi System", @vivshaw's homelab. Currently, it consists of a fleet of VMs provisioned on a 3-physical-machine Proxmox cluster using Packer and Terraform. The end goal is to get the full Hashicorp stack up & running, then deploy some useful self-hosed apps onto the Nomad cluster. I'm not quite there yet!
## Physical specs
The Magi System's physical infrastructure is a 3-node cluster and a switch.
### Nodes
3 physical nodes exist. All are Lenovo M Tiny series mini-PCs, models [M900 Tiny](https://www.lenovo.com/il/en/desktops-and-all-in-ones/thinkcentre/m-series-tiny/M900-Tiny/p/11TC1MTM900) or [M910q Tiny](https://www.lenovo.com/us/en/p/desktops/thinkcentre/m-series-tiny/thinkcentre-m910q/11tc1mt910q). All are specced with 8-core i7-6700T CPUs, 32G RAM, and 1TB SSD. The nodes are:
- **casper** - an M900, at 192.168.1.123
- **balthasar** - an M910q, at 192.168.1.124
- **melchior** - an M910q, at 192.168.1.125### Switch
The switch is a [Netgear GS308E](https://www.netgear.com/business/wired/switches/plus/gs308e/) smart switch, configured to do absolutely nothing fancy at this time.
## Getting started
You'll need to provision a Proxmox API token, then provide these enviroment variables in order for most of the tools and scripts to work:
```sh
export TF_VAR_proxmox_api_url="https://example.com:8006/api2/json"
export TF_VAR_proxmox_api_token_id="example@realm!token-id"
export TF_VAR_proxmox_api_token_secret="some-example-uuid"
```You'll also need Packer, Terraform, and Ansible installed.
## Roadmap
- [ ] Overall: Set up script to check deps & run tools automagically
- [ ] Overall: Get TLS working
- [ ] Overall: Tighten up token perms
- [ ] Overall: Use Vault or something to provide secrets
- [ ] Overall: Single source of truth for physical machine info- hostnames, canonical order, VM template ID, etc.
- [ ] Terraform: Actually configure the Vault & Consul machines, and do the Nomad cluster config
- [ ] Ansible: Find a nicer way to organize the Ansible stuff, once there's more of it
- [ ] Ansible: Pull more, _ideally_ all, of the base VM image configuration into `cloud-init`. That way, the base image can be immutable, and Ansible can be used only for provision-time config.
- [ ] Packer: Provide convenience tools- exa, bat, byobu? nice ZSH config?
- [ ] Proxmox: Configure metal? Provide same suite of convenience tools as VMs on the cluster machines, if possible## Acknowledgements
- https://github.com/kencx/homelab/tree/master
- https://github.com/N7KnightOne/packer-template-debian-11
- https://github.com/ChristianLempa/boilerplates/