Upcoming Architectural Changes to the AWX Project

Hey everyone,

In the interest of transparency, I wanted to make you all aware of a notable architectural change to AWX that we’ve been working on for some time now, because our intention is to finalize and merge it in the very near future, likely resulting in a new major release of AWX.

In short, we’re planning to entirely remove AWX’s usage of RabbitMQ and introduce a dependency on another service, Redis (https://redis.io), which will power a simpler architecture that we feel will make AWX easier to understand and operate going forward.

I won’t repeat the technical details here, but if you’re interested, a very detailed description of what we’re changing, and why we’re doing it can be found on this GitHub issue which has been used to track the work:

https://github.com/ansible/awx/issues/5443

From the beginning, our goal has been for this to be a largely drop-in replacement that should have very little (if any) bearing on our stable API interface, so for most of you, we expect this won’t be something you even notice in your deployments - at most, you’ll notice a Redis container instead of a RabbitMQ one.

That said, given the scope of this change, it’s possible that there could be unintentional fallout as a result of this change when you upgrade. In particular, if you’re doing anything custom specific to your RabbitMQ install, such as any form of custom monitoring, that’s going to no longer be applicable post-upgrade. Additionally, if you’re reliant on some downstream packaged fork/distribution (there are a variety of users maintaining RPM-based installs/distributions) of AWX - maintained by either yourself or some other contributor - you’ll need to adjust appropriately to this change.

Out of an abundance of caution, our intention is to release this change in a new major version of AWX in the coming weeks to signal that risk. For those of you who aren’t quite ready to make the leap, older versions of AWX (9.3.0 and prior) will continue to work the way they do today.

As always, if you have questions about this change, feel free to raise them here (or on the linked GitHub issue). Thanks!