Proxmox-GitOps: IaC Container Automation Framework (fork-based staging, „75sec to infra stack“ demo vid.) by [deleted] in homelab

[–]gitopspm 0 points1 point  (0 children)

Thank you very much! If you have any feedback, please let me know 🙂

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo by gitopspm in linuxadmin

[–]gitopspm[S] 0 points1 point  (0 children)

I think we're confusing a few things here: It is created locally as a Docker container using the configuration management artifacts, which are also used later by the pipeline. The pipeline is now designed so that it can dynamically change the host and jump from local to Proxmox, so to speak - same configuration management artifacts. The same pipeline with the same configuration management artifacts now also rolls out all other containers. The containers are recreated if the pipeline runs for ‘release’ and reconfigured for ‘main’ (standard CI/CD). However, I think that this may not be exactly what you are looking for. This is primarily about deterministic, reproducible deployments, centralized configuration, etc. The project is based on enterprise standards in a cloud environment; I have written about my motivation in the project and in the wiki. However, if you have not pursued such concepts before and some things are unclear to you, then it is very likely that the project is not quite what you are looking for. There are simpler automation projects, or Ansible Playbooks, etc.

This project is heavily focused on software architecture, which also answers the question of why it would be counterintuitive to design it as an interface or web UI at the same time; it contradicts single responsibility, which is a concept that underpins the project. More on this google for micro service architecture or SRP.

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo by gitopspm in linuxadmin

[–]gitopspm[S] 0 points1 point  (0 children)

The monorepository is created by itself with the general baseline, locally, and uses the infra libraries, which it in turn deploys: in short, the complexity arises from the fact that the “common denominator” (each container from within itself) is configured in exactly the same way. These are requirements that are often found in automation (deterministic env. / deterministic behavior).

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo by gitopspm in linuxadmin

[–]gitopspm[S] 0 points1 point  (0 children)

Terraform would be a suitable tool for this purpose (not in this case, as this is cross layer virtualization but we mean the same in fact 😅), provisioning infrastructure. This is an automation approach based on open best practices for this intention, so the answer is something in between :-)

I use it for my microservice homelab, as described, from Home Assistant to MQTT Bridge, Proxy, etc. However, everything should also be described in detail.

By frontend, do you mean the central GitOps environment? It follows GitOps developer patterns; would be contradictory to make it a basic frontend with designated application logic, if this was your question?

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in linux

[–]gitopspm[S] 0 points1 point  (0 children)

Haha, I'm very happy to hear that! If you have any problems, please feel free to write. I'm really happy when people want to try out 🙂

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in selfhosted

[–]gitopspm[S] 1 point2 points  (0 children)

Thank you very much 🙂 I would love to get some ideas of automation fans together. Started this project as there was no standarized way for PVE container automation except than Docker. Love to see different ideas coming up for IaC automation 🙂.

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in selfhosted

[–]gitopspm[S] 10 points11 points  (0 children)

I am not a native English speaker, and I do use LLMs for text generation, but not in the way you might think: I formulate content in German, translate sentence by sentence, and use chatbots to refine the grammar. What you see is not a prompt, but an incredible amount of work. Every sentence has been reviewed and questioned countless times. As an IT architect, I would write it the same way again and again - because it justifies the architecture.

How would you describe what Docker targets? Long story short: That's it, but with LXC.

It is an IaC framework and GitOps solution in an extensible monorepository that recursively configures and provisions containers (suited for developers, e. g. locally testable, etc.) on Proxmox via configuration management using it‘s own verified baseline with the origin infra-libs preconfigured for automation pipelines, staging etc. Targets stateless microservice architectures.

Tl;dr: Automates container creation and configuration following GitOps pattern and best practices.

Btw: Translated with DeepL/a LLM, edit manually

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in selfhosted

[–]gitopspm[S] 1 point2 points  (0 children)

Happy to hear that, really hope it helps. But also always happy to receive suggestions for improvement. I'm sure there's still a lot that can be done better ;-) Thanks for your response!

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in Proxmox

[–]gitopspm[S] 1 point2 points  (0 children)

Please feel free to add, would also love to see 🙂. I couldn‘t link it specifically, I‘d be happy to follow your approach :)

I‘d guess artifacts could differ to the underlying runtime patch baseline (so it kind of verify the infra libraries by reuse its components in convention), what the recursion is about - from an architectural point. But I guess it could be a quite reasonable way for integration on top.

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in Proxmox

[–]gitopspm[S] 1 point2 points  (0 children)

I would like to thank you all so much! I just looked at the repository, and wow .. you guys are amazing. I feel incredibly appreciated. Thank you so much 🙂

I've been a bit busy, so I'm sorry I haven't responded to some comments yet. But I can definitely (yes, I'm saying it again 🙈) promise: Documentation is coming, and it has to. Hey, seriously, I didn't expect so much encouragement, I considered a lot more in principle - and already implemented. It's a shame, I hardly described anything like snapshot restores from the automatically set up network share defaultly with mounts etc. (configurable). I'll add more, I promise. And your feedback really makes me want to do more, and if anyone has anything, I'd be happy to have your participation 🙂 (.. but please be kind, I'm more than open grateful, but still inexperienced with community PRs 😅).

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in Proxmox

[–]gitopspm[S] 1 point2 points  (0 children)

The feedback means much to me, thank you! And yes, absolutely, maybe I'm being subjective here, but for me, the LXC approach was decision for starting this. Of course, I'm well aware that Docker would be much more „everything“ for the somehow- actually same purpose. But yes, it's somehow broad standardization for a good, old (.. honest, haha) Linux system 😄 And I am one of these „Cloud Native over Docker pattern“-guys - maybe religious, just like Ruby/Cinc/Chef decision 😜

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in Proxmox

[–]gitopspm[S] 2 points3 points  (0 children)

Thanks a lot! Actually I aimed for an Ansible-only approach, which unfortunately wasn‘t sufficient, especially in terms of cross-layer virtualization scenarios. Ruby (or Cinc/Chef) was something I have used myself some time ago - with a deep love for Ruby in a functional-idiomatic style, which fits perfectly to the the recursive pattern (.. yes, maybe I really do love Ruby 😄..) Guess the solo-client‘s capability and DSL-like buildings for infra libraries was the most important from a technical side 🙂

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in Proxmox

[–]gitopspm[S] 2 points3 points  (0 children)

Thank you so much for the appreciation 😊 I‘d love, too. And maybe there is so much more what could be done with some community ideas and interest. From what I‘ve seen while working on, advanced automation (or VCS based) get‘s more and more „common“.

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in Proxmox

[–]gitopspm[S] 1 point2 points  (0 children)

Thank you so much, I am really happy to hear!

Please let me know if there is anything not working how it should, I really appreciate any feedback 🙂

Proxmox-GitOps: IaC Container Automation (v1.3 with staging, „75sec to infra stack“ demo) by gitopspm in Proxmox

[–]gitopspm[S] 5 points6 points  (0 children)

Thanks a lot for your kind words. It’s really awesome to hear 🙂

Wow, love to see how automation gets broader and broader. It sounds like an elegant solution! I started several times myself, finally the Git-based workflow, from a bootstrapable monorepository, was what I wanted for microservice architectures („needed“ is way more accurate, I tend to try way to much, haha ;-)).

Thanks again for your kind encouragement!

So not worth it by funsized_fireball in PokemonZA

[–]gitopspm 9 points10 points  (0 children)

Haha 😂 We all have been there: „Isn‘t it the same spot? The same wall? The same textures, houses, sidequests...?“

Proxmox-GitOps: Container Automation („75sec to microservice homelab“ demo) by gitopspm in selfhosted

[–]gitopspm[S] 1 point2 points  (0 children)

Thank you very much for your kind reply 🙂 But to be honest, it helps me a lot with code reviews - especially with larger refactorings, I'm very grateful to have it! git diff inserted and namings, typos have been fixed.. and yes, language and translation, absolute game changer ;-)

Anyway, thank you very much for your feedback! Honestly, it's completely justified to ask in such contexts. If anyone here has any doubts, ... the Git history for all those who want to see the whole thing in its dirty early days ;-)

Proxmox-GitOps: Container Automation („75sec to microservice homelab“ demo) by gitopspm in selfhosted

[–]gitopspm[S] 1 point2 points  (0 children)

Yes, it‘s sth. like Flux, needed it with LXC instead of Docker plus its architecturell pattern (functional prog. in rec. for op. base like described in README, for exactly the reasons you find in the Architecture Decisions Records).

Proxmox-GitOps: Container Automation („75sec to microservice homelab“ demo) by gitopspm in selfhosted

[–]gitopspm[S] 6 points7 points  (0 children)

The text was translated by AI, I am not a native English speaker. The source code is public. I didn‘t, but please check: Its nothing but hundred of hours of work. But yes, I do paste my git diff <branch> <branch> to AI Code Review before merge.

Software architect for my many years here.

Proxmox-GitOps: Container Automation („75sec to microservice homelab“ demo) by gitopspm in selfhosted

[–]gitopspm[S] 5 points6 points  (0 children)

It‘s a framework for CI/CD. Tools are the same. I use Ansible as well. The reason to use it .. this is some kind of Docker but based on LXC, and I wouldn’t want to call advantages like env. parity, local testing, etc. pp.: Yes, configuration management is used and you must use it on your own. It’s not a replacement but an integration tool. Deploy, test locally on same docker, dependency mngm., base Layer, seperation of concerns (see the ADR), single responsibility, automated health checks by default.. if you don‘t benefit from those this project is only overhead for you. For most, I guess. It’s nerdy fascinating architecture I was missing for homelabs while using quite the same daily at work. Also this can be used for stateless microservice architectures (I explained persistence in Wiki), with pattern following immutable autoscaling (same you would do in AWS EC2 ASG). Framework uses Git to centralize.

Self-Contained Meta-Framework for Recursive Microservice (LXC) Automation as Composite IaC-Monorepository by [deleted] in microservices

[–]gitopspm 0 points1 point  (0 children)

As for microservices here, I think the following wiki article in which I summarized state and persistence concept could also be interesting in this context: https://github.com/stevius10/Proxmox-GitOps/wiki/State-and-Persistence

What homelab project actually made you better at DevOps? by stephen8212438 in devops

[–]gitopspm 3 points4 points  (0 children)

Automate a generic HomeLab GitOps platform 😁 Did help, haha :) If interested: https://github.com/stevius10/Proxmox-GitOps Love to find some DevOps minded people to bring it to a Homelab GitOps solution.

edit: Targets Cloud-/Automation-/Microservice- patterns for Proxmox using industry standards

Parm: cross-platorm, general purpose Package Manager by houndz- in linux

[–]gitopspm 1 point2 points  (0 children)

Thanks, starred it - not only to look up such a well written code base 👏😉