Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reconcile use case #2072

Open
gedw99 opened this issue Jul 11, 2023 · 6 comments
Open

Reconcile use case #2072

gedw99 opened this issue Jul 11, 2023 · 6 comments

Comments

@gedw99
Copy link

gedw99 commented Jul 11, 2023

hey @ripienaar

I was wondering if choria can help with reconciliation ?

I saw #2021, which seems to only be managing the agent versions.

What i am thinking about if for example where you have a config file that you push to git and git CI runs, and then you want to tell X number of servers ( via the agent ) to reflect what the config delta is.

I use the word delta because i am thinking like with Terraform where you want to do compare WANTED with ACTUAL to work out the Change set, and then that change set is used by the agents to do whatever is described in that changeset.

@ripienaar
Copy link
Member

For that purpose you don’t need choria to support it. Just write a agent of your own that you use choria to access.

The linked feature is about how choria finds plugins not really about end user behaviours.

Choria itself doesn’t expose any real features over RPC - it’s purpose is to allow you to extend it for your exact use cases.

@gedw99
Copy link
Author

gedw99 commented Jul 11, 2023

ok thanks for quick response.

https://github.com/choria-plugins are all ruby. so this is where i would put logic for reconcilliation.
so then i need to run the hermes thing to use that ?

sorry but i am not a Puppet user, so asking too many questions.

@ripienaar
Copy link
Member

Yes you can extend them using ruby see about agents and clients here https://choria.io/docs/development/index.html

you can also extend it with go binaries and the “external” kind of plugin. There is also a python one linked to from the repo below and if you want to support any other language it’s also easy

https://github.com/choria-io/go-external

@gedw99
Copy link
Author

gedw99 commented Jul 11, 2023

thanks - i like the idea of using go, being a golang coder.

https://github.com/choria-io/go-external looks like a possibility.

https://choria.io/docs/development/mcorpc/goclients/index.html i assume is the docs that are reflecting that repo ?

you made a nice video too: https://www.youtube.com/watch?v=oVYAWePAHow

I have not read it all but from my brief look, it works via golang shared objects compilation to make a DLL or SO that Choria can then call ?

@ripienaar
Copy link
Member

No go shared plugins are awful.

There is a little protocol for how to read the request and how to get the reply and choria just spawns the binary of the plugin on demand.

So you can implement a agent in any language (though we do support compiling some in to the binary, you don’t want those).

The client is how you interact with it over the network and there it can generate a go client for you from the service spec (we call them DDL but it’s like schema of the rpc service)

@gedw99
Copy link
Author

gedw99 commented Jul 11, 2023

Ok thanks for all that..
got totally confused by the DDL naming :)

https://github.com/ripienaar/choria-compose looks like a good starting place to get the hang of it...

Will have to spend a fair bit of time learning the ropes i think...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants