⚠️ WORK IN PROGRESS
- 4 nodes of NEC SFF PC
PC-MK26ECZDR
(Japanese version of the ThinkCentre M700)- CPU: Intel Core i5-6600T
- RAM: 16GB
- SSD: 128GB
- TP-Link TL-SG108 switch
Ansible |
Cloudflare |
Docker |
Fedora |
Gitea |
Helm |
Kubernetes |
Prometheus |
Rancher |
Terraform |
Vault |
Wireguard |
- Enter the tools container, which contains all the neccessary tools (see building instruction bellow)
- Run
make
- Ansible will render the configuration file for each bare metal machine (like IP, hostname...) and the PXE server from templates
- The tools container will create sibling containers to build a PXE server (includes DHCP, TFTP and HTTP server)
- Ansible will wake the machines up using Wake on LAN
- The machine start the boot process:
- BIOS boot in network mode and look for DHCP server
- DHCP server point it to the TFTP server to get boot files and boot config
- The boot config contains parameter to get automated OS installation config file
- The OS get installed and the machine reboots to the new operating system
- Terraform will create a Kubernetes cluster and some install some Helm chart for bootstrap
- ArgoCD will install the applications
Layer | Name | Description | Provisioner |
---|---|---|---|
0 | metal | Bare metal OS installation, Terraform state backend,... | Ansible, PXE server |
1 | infra | Kubernetes clusters | Terraform, Helm |
2 | apps | Gitea, Vault and more in the future | ArgoCD |
For the controller (to run Ansible, stateless PXE server, Terraform...):
- SSH keys in
~/.ssh/{id_ed25519,id_ed25519.pub}
(you can generate it withssh-keygen -t ed25519
) - Docker with
host
networking driver (which means only Docker on Linux hosts, you can use a Linux virtual machine with bridged networking if you're on macOS or Windows)
For bare metal nodes:
- PXE IPv4 enabled
- Wake-on-LAN enabled and boot to network mode by default if turned on via Wake-on-LAN
- Secure boot disabled (optional, depending on the OS)
- Note their MAC addresses
Change these configuration files to match your hardware and network setup:
- Bare metal nodes settings (IP, MAC...)
- OS settings (PXE, network...)
Open the tools container:
make tools
Then build the homelab:
make
See roadmap and open issues for a list of proposed features and known issues.
Any contributions you make are greatly appreciated (feature, bug fixes, documentation, grammar or typo fix...).
Distributed under the GPLv3 License. See LICENSE
for more information.