diff --git a/README.md b/README.md index 1e878c47..95288f3b 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ | 1 | [infra](./infra) | Kubernetes clusters | Terraform, Helm | | 2 | [apps](./apps) | Gitea, Vault and more in the future | Argo | -## Usage +## Get Started ### Prerequisite @@ -72,15 +72,18 @@ For the controller (to run Ansible, stateless PXE server, Terraform...): For bare metal nodes: - PXE IPv4 enabled -- Wake-on-LAN 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 ### Configurations +Change these configuration files to match your hardware and network setup: + - [Bare metal nodes settings](./metal/hosts.yaml) (IP, MAC...) - [OS settings](./metal/group_vars/all.yml) (PXE, network...) -### Building +### Build Open the tools container: @@ -93,3 +96,20 @@ Then build the homelab: ```sh make ``` + +## Roadmap + +See [roadmap](./docs/roadmap.md) and [open issues](https://github.com/khuedoan/homelab/issues) for a list of proposed features and known issues. + +## Contributing + +Any contributions you make are greatly appreciated (feature, bug fixes, documentation, grammar or typo fix...). + +## License + +Distributed under the GPLv3 License. See `LICENSE` for more information. + +## Acknowledgements + +- ArgoCD usage in [my coworker's homelab](https://github.com/locmai/humble) +- [README template](https://github.com/othneildrew/Best-README-Template) diff --git a/docs/changelog.md b/docs/changelog.md index 3fb2ddf4..7be9b2a6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,51 +1,10 @@ # Changelog -- [x] `0.0.1-alpha`: - - [x] Bare metal provisioning with PXE - - [x] LXD cluster - - [x] Terraform state backend (etcd) - - [x] RKE cluster - - [x] Core services (Vault, Gitea, ArgoCD,...) - - [x] Public services to the internet (via port forwarding or Cloudflare Tunnel) -- [ ] `0.0.2-alpha`: - - [x] Ensure idempotency for bare metal provisioning - - [x] Extract instead of mounting the OS ISO file - - [x] Easy initial controller setup (with only Docker) - - [x] Switch to Fedora - - [x] Remove LXD - - [ ] VPN (Wireguard) - - [ ] Access the lab from the internet via VPN - - [ ] Container registry -- [ ] `0.1.0-beta`: - - [ ] Automated metal secrets generation and management - - [ ] Automated `./infra` authentication from `./metal` (Terraform backend and provider) - - [ ] Metal node automatic patching - - [ ] Local DNS (PiHole?) - - [ ] Self managed infrastucture - - [ ] Mirror all git repositories from GitHub automatically (with git hook for faster sync?) - - [ ] Monitoring and alerting - - [ ] Addition services (NextCloud, PeerTube, mailcow, Mattermost/Rocket Chat,...) - - [ ] Dashboard for services - - [ ] SSO - - [ ] Backup solution (3 copies, 2 seperate devices, 1 offsite) - - [ ] Automatic release -- [ ] `1.0.0`: - - [ ] 100% automated - - [ ] Bare-metal OS patching - - [ ] Kubernetes nodes OS patching - - [ ] Backups - - [ ] Secrets management - - [ ] Backup encrytion - - [ ] Secure by default - - [ ] DRY - - [ ] Complete documentation and architecture diagram (automated update if possible) -- [ ] `1.0.1`: - - [ ] Bug fixes (TBD) -- [ ] `1.1.0`: - - [ ] Addition services (TBD) -- [ ] Backlog: - - [ ] Automated testing - - [ ] Security review/audit - - [ ] Migrate to RKE2 (new Terraform provider for RKE2 is not release yet) - - [ ] HA for everything - - [ ] Walkthrough building tutorial and feature demo +## 0.0.1-alpha + +- Bare metal provisioning with PXE +- LXD cluster +- Terraform state backend (etcd) +- RKE cluster +- Core services (Vault, Gitea, ArgoCD,...) +- Public services to the internet (via port forwarding or Cloudflare Tunnel) diff --git a/docs/roadmap.md b/docs/roadmap.md new file mode 100644 index 00000000..78c1f0ea --- /dev/null +++ b/docs/roadmap.md @@ -0,0 +1,48 @@ +# Roadmap + +- [ ] `0.0.2-alpha`: + - [x] Ensure idempotency for bare metal provisioning + - [x] Extract instead of mounting the OS ISO file + - [x] Easy initial controller setup (with only Docker) + - [x] Switch to Fedora + - [x] Remove LXD + - [ ] Move etcd (Terraform state backend) back to Docker +- [ ] `0.0.3-alpha`: + - [ ] Better PXE boot tooling + - [ ] Switch to CoreOS + - [ ] VPN (Wireguard) + - [ ] Access the lab from the internet via VPN + - [ ] Container registry +- [ ] `0.1.0-beta`: + - [ ] Automated metal secrets generation and management + - [ ] Automated `./infra` authentication from `./metal` (Terraform backend and provider) + - [ ] Metal node automatic patching + - [ ] Local DNS (PiHole?) + - [ ] Self managed infrastucture + - [ ] Mirror all git repositories from GitHub automatically (with git hook for faster sync?) + - [ ] Monitoring and alerting + - [ ] Addition services (NextCloud, PeerTube, mailcow, Mattermost/Rocket Chat,...) + - [ ] Dashboard for services + - [ ] SSO + - [ ] Backup solution (3 copies, 2 seperate devices, 1 offsite) + - [ ] Automatic release +- [ ] `1.0.0`: + - [ ] 100% automated + - [ ] Bare-metal OS patching + - [ ] Kubernetes nodes OS patching + - [ ] Backups + - [ ] Secrets management + - [ ] Backup encrytion + - [ ] Secure by default + - [ ] DRY + - [ ] Complete documentation and architecture diagram (automated update if possible) +- [ ] `1.0.1`: + - [ ] Bug fixes (TBD) +- [ ] `1.1.0`: + - [ ] Addition services (TBD) +- [ ] Backlog: + - [ ] Automated testing + - [ ] Security review/audit + - [ ] Migrate to RKE2 (new Terraform provider for RKE2 is not release yet) + - [ ] HA for everything + - [ ] Walkthrough building tutorial and feature demo