2021-02-15 11:40:35 +07:00
|
|
|
# Khue's homelab
|
2020-06-22 14:51:36 +07:00
|
|
|
|
2021-02-15 11:40:35 +07:00
|
|
|
<span style="color:red">**WORK IN PROGRESS**</span>
|
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 |
|
|
|
|
| 1 | [infra](./infra) | Kubernetes clusters | Terraform |
|
|
|
|
| 2 | [platform](./platform) | Vault, Git, Argo,... | Helm |
|
|
|
|
| 3 | [apps](./apps) | | Argo |
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
### Prerequisite
|
|
|
|
|
|
|
|
For the controller (to run Ansible, stateless PXE server, Terraform...):
|
|
|
|
|
|
|
|
- SSH keys in `~/.ssh/{id_rsa,id_rsa.pub}`
|
|
|
|
- `make`
|
|
|
|
- `python3`
|
|
|
|
- Docker with `host` networking driver (which means [only Docker on Linux hosts](https://docs.docker.com/network/host/))
|
|
|
|
- `terraform` (0.14.x)
|
|
|
|
- `multipass` (optional, to create a [test environment](./test) locally)
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
Simply run:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
make
|
|
|
|
```
|
|
|
|
|
|
|
|
Or we can build each layer individually:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
make infra
|
|
|
|
# or
|
|
|
|
cd infra
|
|
|
|
make
|
|
|
|
```
|