Infrastructure
This should cover links and idea around my infrastructure (and infrastructure in general). Their implementation should be mostly be covered on the configurations part, as it all lives in my monorepo.
I treat my local machine as pet but anything that is remote should be considered as cattle. This mainly means it’s a matter of minutes/hours to setup back those machines (limiting factor here would be network and compute time). Everything should be reproductible as much as possible and tested if possible. It is also true for my pet machines though, they should be quick to re-setup if need be (from backups, …).
Needs and requirements
What are my needs and what are my requirements… Writing (and thinking) about them should help me decide what to do in terms of Personal infrastructure. Also, take into account my current “hardware” before taking decision (as “this would be perfect, but does the current hardware do the job”).
One thing to note though, in Personal infrastructure I also have some elements that are related to work. I am a developer, and I work mainly on OpenShift and Kubernetes, and thus I need ways to create temporary cluster on my network.
Let’s split the needs into several parts:
- Work
- OpenShift cluster(s) for development and testing purpose
- Kubernetes cluster(s) for development and testing purpose
- kind for developement (one-node, locally or multiple node, remotely)
- microk8s for remote development (multiple node)
- kubernetes on nixos for a “long-term” cluster running
- Personnal
- Basics:
- Backup and network data access (NAS)
- Secure Remote access to data and machines wherever they are (VPN)
- Sync between systems (some folders like documents, …)
- Extras:
- Automation system à-là-ifttt
- Async download system
- Notifications/Report system (todo deadlines, work report mail, …)
- Health tracking system (fitbit, … sync)
- Media library system
- Music sync system (
music
<-> spotify if possible – i.e playlists, downloads) - Same for Movies, TV Shows, …
- Music sync system (
- Private/public source repository (if not using github, gitlab, git.sr.ht, …)
- Cache system (for build, system updates, …)
- Sharing system (publish securely to a group of ppl)
- Messaging bouncer (irc, …) — get history, keep connected
- Automation system à-là-ifttt
- Bonus:
- Personal libraries depot (ex
lib.tools
) - Continous integration
- Personal libraries depot (ex
- Basics:
The Basics need to be taken care of in priority, and always working. As in kanban, if those are not working, it’s top priority to fix them.
The Extras are nice to have but not required, so decide what to do for them depending on the time you have. This also means, if those are down for a reason, it’s possible to not get them back up. And the Bonus are really if you’re bored or have time to kill (i.e. never).
Also, something for my future self : don’t tie personal infrastructure together. What I mean by that is : use the right things (tools, hardware, …) that do the job, even if it’s not the one you work on at work.
Systems
I am going to list the different system I’ve got, being bare-metal (aka laptop, workstation, nuc, …), in the cloud or VMs. Those are the pet systems, aka the ones that are significant. I won’t list all the cattle VMs I’ve got.
naruhodo
Thinkpad t480s
wakasu
Thinkpad P50
okinawa
sakhalin
honshu
kerkouane remote
honshu
macbook pro 13
hokkaido
Dell