2021-04-19 21:41:25 +07:00
# Homelab
2020-06-22 14:51:36 +07:00
2021-05-02 22:26:54 +07:00
> ⚠️ WORK IN PROGRESS
2021-02-12 16:33:45 +07:00
2021-02-12 16:38:12 +07:00
## Hardware
2020-11-13 00:16:14 +07:00
![Hardware ](https://user-images.githubusercontent.com/27996771/98970963-25137200-2543-11eb-8f2d-f9a2d45756ef.JPG )
2021-02-12 16:38:12 +07:00
- 4 nodes of NEC SFF PC (Japanese version of the ThinkCentre M700)
2020-11-13 00:16:14 +07:00
- CPU: Intel Core i5-6600T
- RAM: 16GB
- SSD: 128GB
2021-02-12 16:38:12 +07:00
- TP-Link TL-SG108 switch
2020-11-13 00:16:14 +07:00
2021-02-12 16:33:45 +07:00
## Architecture
2020-07-23 16:45:58 +07:00
2021-02-15 11:40:35 +07:00
| Layer | Name | Description | Provisioner |
|-------|------------------------|--------------------------------------------------------------|---------------------|
| 0 | [metal ](./metal ) | Bare metal OS installation, LXD, Terraform state backend,... | Ansible, PXE server |
2021-02-15 12:10:02 +07:00
| 1 | [infra ](./infra ) | Kubernetes clusters, shared apps (Git, Vault, Argo...) | Terraform, Helm |
2021-02-15 12:10:48 +07:00
| 2 | [apps ](./apps ) | | Argo |
2021-02-15 11:40:35 +07:00
## Usage
### Prerequisite
For the controller (to run Ansible, stateless PXE server, Terraform...):
- SSH keys in `~/.ssh/{id_rsa,id_rsa.pub}`
2021-05-16 12:59:40 +07:00
- Docker with `host` networking driver (which means [only Docker on Linux hosts ](https://docs.docker.com/network/host/ ), you can use a Linux virtual machine with bridged networking if you're on macOS or Windows)
2021-02-15 11:40:35 +07:00
For bare metal nodes:
- PXE IPv4 enabled
- Wake-on-LAN enabled
- Secure boot disabled (optional, depending on the OS)
### Configurations
- [Bare metal nodes settings ](./metal/hosts.ini ) (IP, MAC...)
- [OS settings ](./metal/group_vars/all.yml ) (PXE, network...)
### Building
2021-03-27 03:45:56 +07:00
Open the tools container:
2021-02-15 11:40:35 +07:00
```sh
2021-05-16 13:20:27 +07:00
make tools
2021-02-15 11:40:35 +07:00
```
2021-05-16 13:20:27 +07:00
Then build the homelab:
2021-02-15 11:40:35 +07:00
```sh
2021-05-16 13:20:27 +07:00
make
2021-02-15 11:40:35 +07:00
```
2021-02-23 21:38:41 +07:00
2021-03-11 01:14:40 +07:00
## Acknowledgments
2021-02-23 21:38:41 +07:00
- [Fix `nf_conntrack` hash size fix for Kubernetes on LXD ](https://github.com/corneliusweig/kubernetes-lxd/issues/10#issuecomment-615950053 )
- [Humble project ](https://github.com/locmai/humble )
- [Kubernetes on LXD issue with BTRFS ](https://medium.com/@ernstae/kubenetes-on-lxd-with-rancher-2-0-part-one-and-a-half-94e6e03f4f2e )
- [LXD container profile for Kubernetes ](https://github.com/justmeandopensource/kubernetes/blob/master/lxd-provisioning/k8s-profile-config )
2021-04-18 23:57:14 +07:00
- [Make LXD containers get IP addresses from LAN ](https://blog.simos.info/how-to-make-your-lxd-container-get-ip-addresses-from-your-lan/ )
2021-04-24 14:31:01 +07:00
- [Some device mount for Kubernetes on LXD ](https://sleeplessbeastie.eu/2020/10/07/how-to-install-kubernetes-on-lxd/ )