Discover more from laserllama's blog
A New IT Automation Project? Moving Beyond Ansible And Keeping The Spirit - An Invitation
update: whoa, this got popular! if you are reading this, check out https://jetporch.com for the start of the homepage (no code shared just yet) and development blog and Discord Chat information. Both links are at the bottom of the page.
So you know Ansible, right? I started the project in 2012. It's now possibly a $600M/year business for IBM and runs computing fleets in most of the Fortune 500. I would not have imagined that growth when I started. I am now looking for a new project, and already have the idea.
So, what’s the problem I want to solve?
Ansible was originally successful because it started out as a really minimal system. It's now successful for different reasons — one of those is it’s everywhere! While much of my original design and influence is still present, I also see things I would do differently, and I think that’s a fair thing to say, without discounting any of the hard work Red Hat has put into it and especially spreading it everywhere, which is appreciated.
The challenge is this - it's now 2023, and because automation became easy, businesses everywhere used that to increase their IT scale and complexity - as they rightfully should have. We now need tools that are more scalable and also, even easier to keep up with that demand. I would like to see a move back towards minimalism, grocery-list style simplicity, and looking at things through a more systems-programming / hard-engineering type lens. Further, with Puppet and Chef being acquired and essentially taken out of the game, we need new places to try new ideas.
Goals? Simply put, things should be rock-solid, lightening fast, well-engineered, and readable and auditable by people who have never even seen the content before.
Nobody wants to learn a new language. Folks have a lot of existing automation content. They don’t want to port content to a new system, and they have even less time for something that might feel like programming. People also didn’t want to help build something from scratch and don’t have a lot of time to contribute to a project like they did in 2012 before agile ate IT/DevOps. So, from experiences in trying projects after 2015, I know I need to solve these problems and release out of the gate with a focus on compatibility and deliver a solution that completely solves some basic use cases. Things must look like a product on launch, and they will!
Here’s my idea:
A new automation platform implemented in Rust, with extremely literate code. Rust does not have objects, but structs and traits are essentially the same thing and just as good! I know Go is popular, but the type system of Rust is more beautiful. Both produce single-binary executables. I’m happy to help people learn the code and ecosystem as it evolves.
Support local connectivity, SSH, and also new message bus deployment architectures supporting potentially 50k-100k systems at once. This architecture will get built shortly after initial release.
Optional, fully asynchronous modes of operation enabled by threading architectures of Rust + messaging, with configurable parallelism at different parts of the pipeline to manage resource contention
Aiming for roughly 90-95% compatibility with existing playbooks, including all critical language features.
Ability to execute existing Ansible python modules via a language wrapper, transparently. As such, we may ship with a bare minimum of modules at the first release. I’m also very open to allowing execution of modules from other configuration management systems or even hooking into Terraform possibly and exposing those modules in a different way. TBD!
Amazing, detailed yet concise documentation with examples
Supporting major Linux distributions at the outset and possibly other Unixes. Take advantage of the advantages of these superior platforms.
Easy to run even from a Mac and git checkout
Regular stable releases but also easy to follow the development branch
Very strong commitment to a stable language specification
Everything can be mostly run as an open source project like Ansible was in 2012. We’ll have a blog, a mailing list / google group, and a minimum of repositories.
Legal note: Ansible is a registered trademark of Red Hat / IBM and is GPLv2 licensed without copyright assignment. This new effort would be GPLv2 so there wouldn’t be any problems with reading code that I and others have contributed.
People are going to say this effort is a ton of work. It’s not terrible, really. I had the same conclusions drawn when I wanted to have alternatives to Puppet in 2012. We had a working implementation in months that was field usable! We start small and we grow. And we build something for posterity that is extremely easy to use and designed for the scale and software diversity of 2023.
People may say containers ate the configuration management world. They did! But this market is not dead, it’s still a billion plus dollar business.
What I want to do is build a solution that allows for systems to be managed in classic ways, including the container supporting infrastructure and stateful data layers, as well as allowing people to also embrace the simplicity of also managing non-container cloud and datacenter instances directly. I want to build a system that allows general purpose workflow orchestration as well. It should also be used to produce images of multiple different types, or audit systems to make sure they match configuration policy. We’ll start small, but the sky is pretty much the limit.