I am about to release a new open source project. Unfortunately I am about to release it anytime soon now for at least one month. So to put some pressure on myself lets talk about it publicly.
My day-to-day job is no longer programming. Started there but slowly got into Build and Configuration Management, then Release Management and finally did some jobs as a deployer. You could say now I do anything AFTER the source code is ready. Build, Release, Deployment, Monitoring and Test Automation (CI/CD).
In the last years, perhaps even decade, the idea of using development techniques during all stages of the delivery pipeline became much more popular and gained a name: DevOps. I started from development so its kinda second nature to me to use version control, separate configuration from code and do testing. Ok … on the last part there is still room for improvement :).
One of the tools I used a lot for this in the last decade is reclass (https://reclass.pantsfullofunix.net/). It was developed as a drop in replacement for the included inventories of ansible, puppet and SaltStack with much better defined rules.
It is also useful without these tools. The end result is one big json or yaml file with your complete configuration. You just read it and act accordingly. I used it over the times to:
- To generate jenkins jobs automatically utilizing Jenkins Job-DSL
- To configure a python script, to separate the script from its configuration.
- To generate documentation.
- To drive complicated build setups that needed to build source code from about fifty repositories in a certain order.
- And naturally as an inventory for ansible.
Some of my colleagues call it a “reclass fetish”. Not sure why :).
I will not go into detail here now how it works. It defines the concept of classes and nodes, rules for inheritance and how to merge the configuration. Lists get appended, Maps get merged but it is also possible to just override them. Check the documentation for more.
The whole concept just has one problem. Its very elegant, very concise and very hard to understand if the inventory is big, and you didn’t create it. Or if you created it half a year ago. I always wanted a graphical tool that would help me stay on top of my ever growing reclass configuration databases.
Later i could implement some additional features on top of what reclass currently provides. Even if reclass works perfectly fine its kind of unmaintained right now. There are some forks out there that added functionality.
End of last year I actually started to develop this tool. A elixir / phoenix liveview application that in its first iteration will be
- be 100% reclass compatible
- add easy insight into reclass configuration databases.
- does not allow editing the files.
Having achieved this I plan to slowly enhance its functionality.
- Add the possibility to add/generate documentation
- Add the possibility to edit the configuration in the webapp
- Add more dynamic features. Like being able to generate list of nodes automatically with a query.
In my next post I want to show a short video of the apps current state. The source code should be opened soon after. I just have to decide on a license. Never open sourced an app like this so not sure what the best license is. Any pointer welcome.