Merge branch 'master' of github.com:khuedoan/homelab

This commit is contained in:
Khue Doan 2021-06-06 13:50:55 +07:00
commit f9bb4a241e
2 changed files with 19 additions and 8 deletions

View File

@ -37,11 +37,28 @@
## Architecture
### Quick explanation
- 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](./metal/roles/pxe-boot/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](./metal/roles/pxe-boot/tasks/wake.yml) 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](./metal/roles/pxe-boot/templates/http/kickstart/fedora.ks.j2)
- The OS get installed and the machine reboots to the new operating system
- Terraform will create a Kubernetes [cluster](./infra/main.tf)
- ArgoCD will install the [applications](./apps/resources)
### Layers
| Layer | Name | Description | Provisioner |
|-------|------------------------|---------------------------------------------------------|---------------------|
| 0 | [metal](./metal) | Bare metal OS installation, Terraform state backend,... | Ansible, PXE server |
| 1 | [infra](./infra) | Kubernetes clusters, shared apps (Git, Vault, Argo...) | Terraform, Helm |
| 2 | [apps](./apps) | | Argo |
| 1 | [infra](./infra) | Kubernetes clusters | Terraform, Helm |
| 2 | [apps](./apps) | Gitea, Vault and more in the future | Argo |
## Usage

View File

@ -18,9 +18,3 @@ docker-compose logs -f
- Check if the operating system ISO file is mounted
- Check the controller firewall config
- Check PXE server Docker logs
## Cloud infrastructure
### RKE cannot connect to the LXC nodes
- Check if you can SSH to the node(s) using the configured SSH key