vangourd / g8r

Powerful configuration management and event-driven automation engine
2 stars 0 forks source link

Initial planning & design #1

Open vangourd opened 10 months ago

vangourd commented 10 months ago

In this document, I've gathered my initial ideas and thoughts about the system's design. It reflects my early understanding of the architecture, essential features, and potential challenges ahead. These concepts are starting points, not final decisions, and represent the seeds from which the project will grow. I'm open to feedback and collaboration to refine these ideas, aiming to ensure the design meets technical goals and user expectations. This marks the start of a dynamic and iterative design process where adaptability and learning will be key.

vangourd commented 10 months ago

Declarative Configuration Language

- Nickel data language

Templating

Automation Modules

Distributed communication

https://crates.io/crates/connect

vangourd commented 10 months ago

Eventual Consistency API Backing

https://github.com/tikv/tikv

vangourd commented 9 months ago

Gradual evolution of the plan here.

Right now I've got the "DSL" for config working with just rudimentary YAML parsing and I might just leave it at that. I think I've come around that CONTROL logic occurs in the modules and user should never have to specify more than parameters to the modules. E.g. there won't be a "loop" construct like in Ansible.

Does that mean less flexibility in what it can do? Only if you are afraid of programming.

With the trait system for modules I hope to support external Rust modules either directly or possibly with wasm components. Additionally I'm open to any pull requests for additional modules to be included in the core.

Right now I've got it polling Github directly for changes to a specified IAC repo. Long term I'd like to do something closer to Flux with a controller syncing for differences. I'd rather coordination between agents happen using a pub/sub protocol like SaltStack.

Looking to implement that with the zmq crate somehow.